2016-07-19 11 views
2

Ich versuche, Datensätze aus einem einfachen HTML-Formular, das ich erstellt habe, in eine Datenbank einzufügen. Ich halte diesen Fehler auf immer:Hinzufügen von Datensätzen aus einem HTML-Formular in eine Datenbank

connected succesfullyError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

die Verbindung erfolgreich ist, aber etwas stimmt nicht mit der SQL-Anweisung, und ich habe nicht in der Lage gewesen, den Fehler zu erkennen.

Dies ist die Form

<form action="addplayer.php"method "post"/> 

     <p> id: <input type="text" name="playerid"/></p> 
     <p> Name: <input type="text" name="name"/></p> 
     <p> Age: <input type="text" name="age"/></p> 
     <p> Position: <input type="text" name="position"/></p> 
     <p> Nationality: <input type="text" name="nationality"/></p> 
    <input type="submit" value="submit"/> 

diesem Zusammenhang die Verbindung

 <?php 

define('DB_NAME', 'syokimaufc'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_HOST', 'localhost'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die ('could not connect: '. mysql_error()); 
} 
$db_selected= mysql_select_db(DB_NAME, $link); 
if (!$db_selected){ 
    die('can\'t use' . DB_NAME .': ' . mysql_error()); 
} 
echo 'connected successfully'; 

Implementierung

<?php 
require 'connection.php'; 


$id = filter_input(INPUT_POST, 'playerid'); 
$name = filter_input(INPUT_POST, 'name'); 
$age = filter_input(INPUT_POST, 'age'); 
$position = filter_input(INPUT_POST, 'position'); 
$nationality = filter_input(INPUT_POST, 'nationality'); 

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

if (!mysql_query($sql)){ 
    die('Error: ' . mysql_error()); 
} 
+0

Sie sind in Anführungszeichen '$ nationality' und Ihre Seite ist beschämend anfällig für SQL-Injection-Angriffe fehlt. Beenden Sie die Verwendung von mysql_ * -Funktionen und tun Sie sich einen Gefallen, indem Sie lernen, vorbereitete Anweisungen mit PDO zu verwenden –

Antwort

1

Veränderung ist:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

An:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationality) VALUES ('$id','$name','$age','$position','$nationality')"; 

UPDATE Wie Jeff Puckett II richtig unten im Kommentarbereich wies darauf hin, gab ich meine erste Antwort in aller Eile und erwähnt haben sollte, dass Sie sich bis zu SQL-Injection sind zu öffnen und andere unangenehme Probleme, indem Sie Ihre Daten nicht bereinigen.

Dinge zu tun, mehr sicher ändern:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

An:

$_id = mysql_real_escape_string($id); 
$_name = mysql_real_escape_string($name); 
$_age = mysql_real_escape_string($age); 
$_position = mysql_real_escape_string($position); 
$_nationality = mysql_real_escape_string($nationality); 
$sql = "INSERT INTO players (playerid, Name, Age, Position, Nationality) VALUES ('$_id', '$_name', '$_age', '$_position', '$_nationality')"; 
+1

Obwohl dies technisch nicht falsch ist, ist dies eine schlechte Antwort, da es keine bewährten Methoden zur Bereinigung von Benutzereingaben enthält. Sie sollten versuchen, die beste Antwort zu posten, die Sie können, nicht die schnellste schnellste schmutzigste, und ich glaube, dass Sie es besser machen können :) –

+0

Danke für die Hilfe. Ich bin neu in PHP und lerne jeden Tag. @JeffPuckettII Ich freue mich über Ihren Kommentar, aber nicht die Lieferung. –

+0

hallo nochmal, ich habe anscheinend ein anderes kleines problem bekommen. Sobald ich den Code ausgeführt habe, gibt die Webseite "Erfolgreich abgeschlossen" aus, aber der Datensatz wird nicht angezeigt. Es sieht so aus, als würde es Nullwerte für jedes der Felder eingeben, denn wenn ich versuche, einen anderen Datensatz einzugeben, bekomme ich diesen Fehler "erfolgreich verbunden Fehler: Doppelter Eintrag '0' für Schlüssel 'PRIMÄR' 'Wie kann ich das lösen? –

Verwandte Themen