3

INSERT SQL ステートメントで PHP 変数を使用しようとしています。これに対する以前の回答を見たことがありますが、私のものを機能させることはできません。これがコードです..

mysql_query("INSERT INTO message (message_id, from, content) values ('', " . $uid . ", 'test message content')");
4

3 に答える 3

10

主な問題は、これfrom予約語であり、バックティックにする必要があることです。

mysql_query("INSERT INTO message (message_id, `from`, content) VALUES ...");

ただし、廃止された関数の使用を停止することもお勧めしますmysql_*。PDO とパラメーター付きの準備済みステートメントを確認することをお勧めします。

于 2012-07-31T15:55:53.827 に答える
0

message_idが主キーの場合、値がない限り、クエリに含める必要はありません。

mysql_query("INSERT INTO message (`from`, `content`) values (" . $uid . ", 'test message content')");
于 2012-07-31T15:56:54.467 に答える
0

クエリには少なくとも 3 つの問題があります。そのうちの 2 つは構文エラーで、1 つは重大な脆弱性です。

クエリを機能させるには、次のように記述します。

mysql_query("INSERT INTO message (message_id, `from`, content) values ('', '" . $uid . "', 'test message content')");`

エラーの概要は次のとおりです。
- 別のユーザーが指摘したように、「from」はキーワードであり、テーブルの列に名前を付けるために使用しないでください。本当にそのような名前を使用したい場合は、バッククォートを使用してクエリでそれを示す必要があります。
- $uid の値は、単一引用符で囲む必要があります。
- 3 番目の最も重要なエラーは、クエリがSQL インジェクションに対して脆弱であることです。このような攻撃から身を守る準備済みステートメントを使用する必要があります。

于 2012-07-31T15:58:23.433 に答える