INSERT SQL ステートメントで PHP 変数を使用しようとしています。これに対する以前の回答を見たことがありますが、私のものを機能させることはできません。これがコードです..
mysql_query("INSERT INTO message (message_id, from, content) values ('', " . $uid . ", 'test message content')");
主な問題は、これfrom
が予約語であり、バックティックにする必要があることです。
mysql_query("INSERT INTO message (message_id, `from`, content) VALUES ...");
ただし、廃止された関数の使用を停止することもお勧めしますmysql_*
。PDO とパラメーター付きの準備済みステートメントを確認することをお勧めします。
message_idが主キーの場合、値がない限り、クエリに含める必要はありません。
mysql_query("INSERT INTO message (`from`, `content`) values (" . $uid . ", 'test message content')");
クエリには少なくとも 3 つの問題があります。そのうちの 2 つは構文エラーで、1 つは重大な脆弱性です。
クエリを機能させるには、次のように記述します。
mysql_query("INSERT INTO message (message_id, `from`, content) values ('', '" . $uid . "', 'test message content')");`
エラーの概要は次のとおりです。
- 別のユーザーが指摘したように、「from」はキーワードであり、テーブルの列に名前を付けるために使用しないでください。本当にそのような名前を使用したい場合は、バッククォートを使用してクエリでそれを示す必要があります。
- $uid の値は、単一引用符で囲む必要があります。
- 3 番目の最も重要なエラーは、クエリがSQL インジェクションに対して脆弱であることです。このような攻撃から身を守る準備済みステートメントを使用する必要があります。