2016-05-26 5 views
2

を取得しています:挿入elemets私は、これは誤りであるシンタックスエラーに

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

パスワードは予約済みのキーワードです。 –

+2

カラム名 'user name'のスペースはバックスティック内で使用します – Saty

+0

あなたのコードはSQLインジェクションにもオープンしています。プリペアドステートメントを使用するか、少なくとも入力をエスケープする必要があります。 –

答えて

-2

VALUESの前にスペースを提供して、一度

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

この時点で空白は完全に無関係です。 –

0

スペースを試してみてください問題の列名user nameをバックティック内で使用してください。あなたが右sintaxため

を2名フィールドuser nameチェックを使用しているより良い利用バインド読むhttp://php.net/manual/en/mysqli-stmt.bind-param.php声明

$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); 

を準備

0

、あなたは単語の使用を逆にしている場合

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

をbackstik MySQLのカラムには通常、空白を入れることはできません。

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

必須コメント:user nameは単なる誤植でない場合は、バッククォートでエスケープする必要があり
文字列置換を使用したSQL文のSQLインジェクション攻撃に対して脆弱あなたのコードを残します。あなたは本当にprepared statementsを調べるべきです。

+0

あなたの貴重な答えはあなたのほうがはるかに多い –

関連する問題