0
$query = sprintf("SELECT * FROM sorular WEHERE test_id='%s' ORDER BY id LIMIT '%s', '%s'",
mysql_real_escape_string(htmlentities(stripslashes($testid))), 
mysql_real_escape_string(htmlentities(stripslashes($start))), 
mysql_real_escape_string(htmlentities(stripslashes($perpage))));

エラーが発生します:

SQL構文にエラーがあります。1行目の'test_id='1'ORDER BY id LIMIT' 4'、' 2''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

3 に答える 3

3

制限とオフセットは常に整数です。これを試して:

$query = sprintf("SELECT * FROM sorular WHERE test_id='%s' ORDER BY id LIMIT %s, %s",
mysql_real_escape_string(htmlentities(stripslashes($testid))), 
$start, 
$perpage);

とにかく、最悪の方法で変数をフィルタリングします。整数は整数であり$int = (int) $maybeInteger;、文字列を使用します-あなたが行うmysql_real_escape_string()stripslashes()同時に、この関数はおなじみです、手動を見てください。htmlentities()ろ過後に使用する必要があります。

言われたように、正解は次のとおりです:WEHERE=> WHERE

于 2012-07-05T16:07:46.317 に答える
1

簡単なタイプミスをしました:WEHERE-> WHERE

于 2012-07-05T16:08:15.490 に答える
0

クエリでWHEREという単語のスペルが間違っています。

于 2012-07-05T16:08:35.893 に答える