SQL语法错误。看起来我想念一些东西

时间:2012-07-07 07:52:05

标签: php mysql sql

这是我的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服务器版本相对应的手册,以便在''40'附近使用正确的语法)AS子查询'在第8行

这里有什么问题?

3 个答案:

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

答案 1 :(得分:2)

我认为您正在将限制值扫描为字符串。把它读作int值。这将解决我认为的问题

答案 2 :(得分:1)

您不需要LIMIT的引号。 LIMIT期待一个数字,而你提供一个字符串。

将其更改为:

LIMIT %d

我建议对WHERE test_iduser_idINT进行相同的操作,如果类型为{{1}}