1

phpMyAdmin (3.5.7) の SQL ウィンドウを使用して行を MySql テーブルに挿入していますが、構文チェッカーに問題があります。Windows Server 2003 上で動作しています。

[挿入] ボタンをクリックしてテンプレートを生成し、テンプレートの値を上書きしても問題ありません。ただし、多数の行を入力する必要があるため、Excel を使用して INSERT ステートメントを自動生成し、それらをテキスト エディターに貼り付けてから、同じ phpMyAdmin SQL ウィンドウに貼り付けました。結果はむずかしい…

以下のステートメント (Excel/テキスト エディター/コピー & ペーストを使用して生成) はエラーになります。

#1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の ''timeslot' ('slot_no', 'slot_starttime') VALUES (3,'00:30')' 付近で使用する正しい構文を確認してください。

INSERT INTO 'timeslot' ('slot_no', 'slot_starttime') VALUES (2,'00:15')

ただし、以下のステートメントは問題ありません (SQL ウィンドウの [挿入] ボタンをクリックし、テンプレート内のテキストを上書きすることによって作成されました。

INSERT INTO `timeslot`(`slot_no`, `slot_starttime`) VALUES (2,'00:15')

両方のステートメントをコピーして、phpMyAdmin ウィンドウからこの投稿に直接貼り付けました。それらは私にはほとんど同じに見えるので、最初のものがなぜ失敗するのか理解できません。

???

4

1 に答える 1

3

そのまま結果をそのまま貼り付けてしまった場合は構文エラーです。

MYSQL では、アポストロフィ記号を使用してフィールドまたはテーブル名を囲むことはできません。むしろ、(チルダ キーで) BACK-QUOTE を使用する必要があります。

したがって、次は間違っています。

INSERT INTO 'timeslot' ('slot_no', 'slot_starttime') VALUES (2,'00:15')

そして、以下は正しいです:

INSERT INTO `timeslot` (`slot_no`, `slot_starttime`) VALUES (2,'00:15')

そして、以下も正しいです(逆引用符なし):

INSERT INTO timeslot (slot_no, slot_starttime) VALUES (2,'00:15')

一般的な一重引用符 (') は、SQL ステートメントの VALUES にのみ使用されます。

于 2013-03-07T10:21:57.830 に答える