0

これ以上髪を引きちぎるのを避けるために、ここで質問をしたいと思いました.PHP Mysql UPDATEで腹立たしい時間を過ごしているからです.私はかなり頻繁に使用し、理解したと思っていました!

基本的に、MySQL の更新機能を壊すことが知られているテーブル ヘッダー名はありますか? たとえば、次のように、完全に機能する Update mysql_query 関数があります。

UPDATE table_name SET
part_number='000 - New Product',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'

ただし、「トリガー」と呼ばれるテーブル ヘッダーをコードに含めると、コードが壊れます。

UPDATE table_name SET
part_number='000 - New Product',
trigger='YES',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'

上記の sql は次のエラーを返します。**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 'trigger='YES', part_number='000 - New Product', product_code='1', barcod' at line 1**

「trigger」と呼ばれる列の同一の複製を作成し、「testing_t」という名前に変更すると、すぐにすべてが以前と同じように完全に機能します。UPDATE コマンドで使用するために mysql_real_escape_string を変数にダンプしてインラインで実行しようとしましたが、文字列をハードコーディングしようとしましたが、それでも壊れます。

誰でもこれに光を当てることができますか?サイト全体で参照を変更したくないので、テーブル ヘッダー名を変更する必要がないようにしたいのが理想です。他に選択肢がない場合は明らかにそうしますが、私はただ愚かであり、誰かがなぜそれが起こっているのか/それを止める方法を説明できることを願っています!

前もって感謝します、

ジョー

4

3 に答える 3

3

このクエリを使用します

UPDATE table_name SET
`part_number`='000 - New Product',
`trigger`='YES',
`product_code`='1',
`barcode_ref`='1',
`type`='new type'
WHERE id='999'

triggerなしで書いているため、クエリは失敗します``

triggerトリガーを作成するための mysql の予約語です。

予約語を列名として使用するには、その単語を内部に記述する必要があります``

于 2013-02-05T11:10:47.040 に答える
2

triggerは mySQL キーワードです。すべてのカラム名を `` で囲めば安全です。これらのキーワードを列名として使用しないことをお勧めします。

他のキーワードはこちらhttp://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

于 2013-02-05T11:14:15.323 に答える
1

mySQL には一連の予約語があり、TRIGGER はその 1 つです。列/テーブルを何と呼んではいけないかについては、次の単語リストを参考にしてください。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2013-02-05T11:13:16.843 に答える