0

MySQLと混同しています。という主キー フィールドを持つテーブルをクエリしていますindex

SELECT * FROM content WHERE index = 7

かなり単純ですよね?ただし、エラー番号 1064 前後の構文エラーが発生し続けますindex = 7(iPhone シミュレーター上にあるため、エラーを貼り付けることはできません)。

フィールドにindexは 7 が含まれています。PRIMARY_KEYint(6)

データベースは、他のフィールドなどを照会して正常に動作します。

このフィールドを照会する前に、確実に設定する必要がある設定はありますか?

とても有難い。

4

3 に答える 3

4
SELECT * FROM content WHERE `index` = 7

indexは MySQL の予約語です。バックティックでエスケープする必要があります。こちらをご覧ください

于 2012-08-09T11:07:33.450 に答える
2

別の適切な回避策 (予約語である列識別子の場合) は、列をテーブル名またはテーブル エイリアスで修飾することです。私の好みは、常にテーブル エイリアスを使用することです。この例では、テーブルcontentに のエイリアスを指定cします。これをクエリで参照できます。

SELECT c.* FROM content c WHERE c.index = 7

この例では、テーブル エイリアスで修飾されている場合、MySQL はそれを識別子と見なすため、カラム名をバッククォートで囲む必要はありません。予約語をテーブル名で修飾することはできません。

テーブル エイリアスの使用は、複数のテーブルを参照したり、同じテーブルを複数回参照したりする、より複雑なステートメントで使用するパターンです。単純なステートメントで同じパターンを使用することを妨げるものは何もありません。

また、識別子の前後のバッククォートは、必要な場合でも常に許可されます。

SELECT `c`.* FROM `content` `c` WHERE `c`.`index` = 7
于 2012-08-09T13:58:00.773 に答える
1

インデックスは予約語です。使用してください

Select * from content 
where `index` = 7
于 2012-08-09T11:08:10.417 に答える