3

クエリの構文でおそらくばかげたエラーを犯しましたが、それを修正するために継ぎ合わせることができません。これが私のプログラムが実行しようとするクエリです:

INSERT INTO filez (
  filename,
  uploadedby,
  dateuploaded,
  public,
  FileSize,
  FileTransferSize,
  key,
  bytes
)
VALUES(
  'tacct/tesABCscdsdasdasdD.testtest',
  'tacct',
  '%27 %December %2012, %7:%32:%15%AM',
  1,
  7,
  7,
  '`',
  'TestDoc'
)

そして、これがmysql_errorです:

SQL構文にエラーがあります。'key、bytesの近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください)VALUES(' tacct / tesABCscdsdasdasdD.testtest'、' tacct'、'%27%D'1行目

クエリのFileSizemysql_real_escape_string()とFileTransferSizeを除いて、すべてを実行しました。私が間違っていることを教えていただけますか?ありがとう!

4

6 に答える 6

13

このエラーは、エラーがテキストkeyで発生していることを示しています。これは非常に正しいです。これkeyは、MySQLの予約語です。

フィールド名として使用する場合は、バッククォート( `)で囲む必要があります。とにかくそれは良い一般的な習慣です。

それで:

INSERT INTO `filez` (
  `filename`,
  `uploadedby`,
  `dateuploaded`,
  `public`,
  `FileSize`,
  `FileTransferSize`,
  `key`,
  `bytes`
)
VALUES(
  'tommy3244/tesABCscdsdasdasdD.testtest',
  'tommy3244',
  '%27 %December %2012, %7:%32:%15%AM',
  1,
  7,
  7,
  '`',
  'TestDoc'
)
于 2012-12-27T13:43:07.737 に答える
4

次のクエリを使用してみてください

INSERT INTO filez (filename, uploadedby, dateuploaded, public, FileSize, FileTransferSize, `key`, bytes) VALUES
('tommy3244/tesABCscdsdasdasdD.testtest', 'tommy3244', '%27 %December %2012, %7:%32:%15%AM', 
1, 7, 7, '`', 'TestDoc')

keyはキーワードなので、上記で使用したようにバッククォートを使用する必要があります。詳細については、次の質問も確認 してください。キーワード名の列を選択してください

于 2012-12-27T13:44:21.567 に答える
4

keyは予約語であり、backticsを使用せずに列名で使用することはできません。これを試して

INSERT INTO filez (`filename`, `uploadedby`, `dateuploaded`, `public`, `FileSize`, `FileTransferSize`, `key`, `bytes`) VALUES('tommy3244/tesABCscdsdasdasdD.testtest', 'tommy3244', '%27 %December %2012, %7:%32:%15%AM', 1, 7, 7, '`', 'TestDoc')
于 2012-12-27T13:44:53.483 に答える
3
 INSERT INTO `filez` (`filename`, `uploadedby`, `dateuploaded`, 
                    `public`, `FileSize`, `FileTransferSize`, 
                     `key`, `bytes`) 
        VALUES('tommy3244/tesABCscdsdasdasdD.testtest',   'tommy3244', 
                '%27 %December %2012, %7:%32:%15%AM', 1, 7, 7, '`', 'TestDoc')    

わかった、

syntax to use near 'key, bytes) どちらも予約語です。ユーザー定義の識別子には常に`記号を使用することをお勧めします。

于 2012-12-27T13:45:04.733 に答える
0

KEYmysql用に予約されたキーワードです

他の列名を試すか、そのようなバッククォートを作成してください ``

于 2012-12-27T13:53:51.180 に答える
0

問題は、キーがmysqlの予約キーワードであり、列名として使用することはできません。本当に必要な場合は、バックティック文字で囲みます。

key

于 2012-12-27T13:55:18.663 に答える