类型为
这是我的sql代码与php的结合
$query = sprintf("SELECT SUM( value ) AS totalvalue
FROM (
SELECT *
FROM answers
WHERE user_id='%s'
AND test_id ='%s'
ORDER BY answers.id DESC
LIMIT '%s'
)
AS subquery",
$user_id,
mysql_real_escape_string($test_id),
$num_of_q);
这是一个错误:
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第8行的"40")AS子查询附近使用的正确语法
这里有什么问题?
从极限值中删除''
,并在使用数字时使用%d
:
$query = sprintf("SELECT SUM( value ) AS totalvalue
FROM (
SELECT *
FROM answers
WHERE user_id='%s'
AND test_id ='%s'
ORDER BY answers.id DESC
LIMIT %d
)
AS subquery",
$user_id,
mysql_real_escape_string($test_id),
$num_of_q);
我认为您正在将Limit值扫描为字符串。将其读取为int值。这将解决问题,我认为
LIMIT
不需要引号。LIMIT
在它后面需要一个数字,而您为它提供了一个字符串。
更改为:
LIMIT %d
如果INT
test_id
和user_id
,我建议您对WHERE
子句也这样做