1. ホーム
  2. php

[解決済み] MySQL Syntax Error; "check manual that corresponds to your MySQL server version...". [重複しています]。

2022-02-09 02:12:24

質問

以下のエラーの解決策をインターネット上で探しまくっています。

"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 'primary, username, password, password2) VALUES (null, 'hello', 'hello', 'hello')' at line 1"

何が起こっているのかさっぱりわからない。私のコードが何なのか聞かれると思うので、ここに書いておきます。

$con = mysql_connect("localhost","root","*****");
    if (!$con)
      {
      die('Server overload, please try again' . mysql_error());
      }

    mysql_select_db("users", $con);

    $sql = "INSERT INTO details (primary, username, password, password2) VALUES (null, '$_POST[username]', '$_POST[password]', '$_POST[password2]')";

    if (!mysql_query($sql,$con))
      {
      die('Error: Server overload, try again' . mysql_error());
      }
    echo "You have signed up successfully!";

    mysql_close($con);

かれこれ4・5時間くらい試行錯誤しているのですが、なかなかうまくいきません。
ありがとうございます。
ローレンス

解決方法は?

primary 予約キーワード というのは、SQLでは、:

  • そのカラムの名前を変更する -- このような状況を避けるためには、良いアイデアでしょう。
  • または、名前の周りにバックスティックを使用する

2つ目のケースでは、以下のようなクエリになります。

INSERT INTO details (`primary`, `username`, `password`, `password2`)
VALUES (null, 'hello', 'hello', 'hello')


注 : 値をエスケープする必要があります。 mysql_real_escape_string を避けるために SQLインジェクション !