2016-05-26 10 views
2

Dies ist Fehler:Einfügen elemets in mysql von php ich erhalte Syntaxfehler

INSERT INTO registration_table(username,password,email,phonenum)VALUES 
('rahul','hdhh','[email protected]','7386627473') 

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'name,password,email,phonenum)VALUES ('rahul','hdhh','[email protected]','738662747' at line 1`

<html> 
    <body> 
     <?php 
     if ($_SERVER["REQUEST_METHOD"] == "POST") { 
      $user_name = $_POST["uname"]; 
      $password = $_POST["password"]; 
      $email = $_POST["email"]; 
      $phonenum = $_POST["phno"]; 
     } 
     $link = mysqli_connect('localhost', 'root', '', 'test_ybf'); 
     if (!$link) { 
      die('Could not connect: ' . mysqli_connect_error()); 
     } 

     $sql = "INSERT INTO registration_table(user name,password,email,phonenum)VALUES ('$user_name','$password','$email','$phonenum')"; 
     if (mysqli_query($link, $sql)) { 
      echo "success"; 
     } else { 
      echo "error:" . $sql . "<br>" . mysqli_error($link); 
     } 
     mysqli_close($link); 
     ?> 
    </body> 
</html> 
+0

Passwort ist ein reserviertes Schlüsselwort. –

+2

Platz in Spalte Name 'Benutzername' verwenden Sie es innerhalb Backtick – Saty

+0

Beachten Sie auch, dass Ihr Code für SQL-Injektionen offen ist. Sie sollten vorbereitete Anweisungen verwenden oder zumindest der Eingabe entgehen. –

Antwort

-2

Geben Sie Raum vor VALUES und einmal versuchen,

INSERT INTO registration_table(user name,password,email,phonenum) VALUES('$user_name','$password','$email','$phonenum') 
+1

Whitespace ist an dieser Stelle völlig irrelevant. –

0

Raum Erstelle den Namen der Problemspalte user name benutze ihn im Backtick. Bessere Nutzung binden vorbereiten Anweisung

$stmt = $link->prepare("INSERT INTO registration_table(`user name`,`password`,`email`,`phonenum`)VALUES (?,?,?,?)"); 
$stmt->bind_param('ssss', '$user_name', '$password', '$email', '$phonenumt'); 
/* execute prepared statement */ 
$stmt->execute(); 

printf("%d Row inserted.\n", $stmt->affected_rows); 

lesen http://php.net/manual/en/mysqli-stmt.bind-param.php

0

Sie verwenden einen zwei Namensfeld user name Prüfung für die richtige sintax

und wenn Sie den Einsatz umgekehrt Wort backstik haben

$sql="INSERT INTO registration_table(username,password,email,phonenum) 
    VALUES ('$user_name','`$password`','$email','$phonenum')"; 
1

Spalten in MySQL können normalerweise keine Leerzeichen enthalten. Wenn user name nicht nur ein Tippfehler ist, sollten Sie es mit Backticks entkommen:

$sql="INSERT INTO registration_table(`user name`,password,email,phonenum)VALUES ('$user_name','$password','$email','$phonenum')"; 
# Here-------------------------------^---------^ 

Pflicht Kommentar:
Mit String-Ersetzung in SQL-Anweisungen verläßt Code anfällig für SQL-Injection-Attacken. Sie sollten wirklich in prepared statements schauen.

+0

als Sie soooo viel für Ihre wertvolle Antwort, es hat funktioniert –