0

以下の PHP コードは、エラー コードを報告します。

$id = $_SESSION['sno'];
$q = mysql_query("select * from messages where seen=0 and to=$id");
if(!$q){die("critical failure: ".mysql_error());}

報告されたエラーは次のとおりです。

critical failure: 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 'to=1' at line 1

'to=1' は、$_SESSION['sno'] が 1 に設定されていることを示します

4

3 に答える 3

2

これは、mysql reserved keyword

$q = mysql_query("select * from messages where seen=0 and `to`=$id");

TOは予約済みのキーワードです。エラーを回避するには、バッククォート ` で囲みます

side nmysql_*機能は非推奨になっているため、 or のいずれかに切り替えてPDO準備mysqli済みステートメントを使用して、 のリスクを回避することをお勧めします。mysql injections詳細については、PHP での SQL インジェクションを防ぐにはどうすればよいですか?

于 2013-06-16T14:27:02.923 に答える
2

toは予約済みのキーワードで、引用識別子を使用してエスケープします。

mysql_query("select * from messages where `seen`=0 and `to`=$id"); 
于 2013-06-16T14:28:09.503 に答える
0

これは My SQL のキーワードであるため、to のような単語には ` 記号を使用する必要があります。

したがって、クエリは次のようになります

$q = mysql_query("select * from messages where seen=0 and `to`=$id");
于 2013-06-16T14:27:46.417 に答える