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 値を string としてスキャンしていると思います。int値として読んでください。それで問題が解決すると思います

于 2012-07-07T08:01:03.937 に答える
1

の引用符は必要ありませんLIMITLIMIT文字列を指定している間、その後に数字が必要です。

次のように変更します。

LIMIT %d

あなたのWHERE句についても同じことをすることtest_idをお勧めしuser_idますINT

于 2012-07-07T07:57:05.043 に答える