使用WHERE的SQL语法错误

时间:2012-07-05 16:05:55

标签: php mysql sql

$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语法有错误;查看与MySQL服务器版本对应的手册,以便在'test_id ='1'附近使用正确的语法。在第1行的ORDER BY id LIMIT'4','2'

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你刚刚写了一个简单的拼写错误:WEHERE - > WHERE

答案 2 :(得分:0)

您在查询中拼写了单词WHERE错误。