8

テーブル名のエスケープに少し問題があります。私はとても愚かだったので、テーブルの名前に「show」を選びました。mysqli 接続を使用すると、エスケープは正常に機能しますが、従来の mysql 接続では機能しません。何かアドバイスはありますか?私の英語で申し訳ありませんが、私はネイティブ スピーカーではありません。

SELECT SQL_CALC_FOUND_ROWS year, nameShow 
FROM   `show`
LIMIT 0, 10

次のようにエラーが発生します

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show' at line 2 –

クエリ

$sQuery = "
    SELECT SQL_CALC_FOUND_ROWS year, nameShow 
    FROM   `show`
    $sWhere
    $sOrder
    $sLimit
    ";
4

3 に答える 3

10

MySQL 5.1 リファレンス マニュアルのセクション 9.3では、バック ティック (`) または二重引用符 (") が使用されていますが、上記の Fahim Parkar のコメントに従い、テーブルの名前を変更するだけです。

また、セクション 9.2に従って二重引用符を使用する場合は、ANSI_QUOTES SQL モードを使用する必要があります。

ANSI_QUOTES SQL モードが有効になっている場合は、二重引用符で識別子を引用することもできます。

于 2012-06-12T21:04:15.897 に答える
4

問題は、SHOW ではなく YEAR にあります。YEAR は MySQL 関数です。ベスト プラクティスは、列とテーブルの名前を常に引用符で囲み、読みやすくすることです。

次のようにする必要があります。

SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow` 
FROM   `show`
LIMIT 0, 10
于 2012-11-15T07:19:11.977 に答える
1

バックティックは正常に機能するはずです

SQL_CALC_FOUND_ROWSの後にコンマを入れてみてください。

SELECT SQL_CALC_FOUND_ROWS, year, nameShow 
FROM   `show`
LIMIT 0, 10
于 2012-06-12T21:16:28.497 に答える