1

这是我结合php的sql代码

$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 subquery' 附近使用正确的语法

这里有什么问题?

4

3 回答 3

3

''从限制值中删除并在%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);
于 2012-07-07T07:54:13.217 回答
2

我认为您正在将 Limit value 扫描为 string 。将其读取为 int 值。这将解决我认为的问题

于 2012-07-07T08:01:03.937 回答
1

您不需要LIMIT. LIMIT后面需要一个数字,而您为它提供了一个字符串。

将其更改为:

LIMIT %d

我建议对你的WHERE子句做同样的事情test_iduser_id如果它们是类型INT

于 2012-07-07T07:57:05.043 回答