-2
$stmt = $dbo->getConnection()->prepare("SELECT count(character_name)
            FROM playercharacter
            JOIN character
            ON (playercharacter.character_id = character.character_id)
            WHERE user_id = :user_id");

私に与える

致命的なエラー: メッセージ 'SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 を含む例外 'PDOException' がキャッチされません: SQL 構文にエラーがあります。/home/content/50/10835750/html/dogdays/game/ の 'character ON (playercharacter.character_id = character.character_id)' at line 3' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 private.php:43 スタック トレース: #0 /home/content/50/10835750/html/dogdays/game/private.php(43): PDOStatement->execute(Array) #1 {main} が /home/content でスローされる/50/10835750/html/dogdays/game/private.php 43 行目

4

1 に答える 1

3

character予約済みのキーワードであり、たまたまテーブルの名前です。構文エラーを回避するために、テーブル名はバッククォートを使用してエスケープする必要があります。元、

SELECT  count(character_name) 
FROM    playercharacter JOIN `character` 
            ON (playercharacter.character_id = `character`.character_id) 
WHERE   user_id = :user_id

テーブルを変更する権限がある場合は、予約済みキーワード リストにないテーブル名を変更して、同じエラーが再発しないようにします。

于 2013-05-07T14:04:03.153 に答える