1

私はこれらの2つのステートメントをいくつかのPHPコードで次々に実行しています。

INSERT INTO input (ID) VALUES('1');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=1

データベーステーブルが空の場合(つまり、テーブルを切り捨てただけの場合)、データは作成されず、警告は表示されません。クエリを実行したことがないかのようです。

私がそれからちょうど走るなら

   INSERT INTO input (ID) VALUES('1');

これとまったく同じクリアテーブルで、エントリが問題なく作成されます。その後、同じINSERT/UPDATEクエリを再度実行すると

INSERT INTO input (ID) VALUES('2');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=2

次に、データが作成され、vendor_nameが適切に設定されます。ここで何が起こっているの?データベースにデータを挿入することについて、何か基本的なことを誤解しているようです。空のテーブルでこのようにステートメントを連続して実行することはできませんか?

「列は存在しますか?」のような避けられないばかげた質問を先取りするために、ここにいくつかの追加のメモがあります:

  • 警告は表示されません。これは本当に私を悩ませます。INSERT/UPDATEは黙って失敗するようです。(はい、はい、エラー報告を設定し、ログを確認しました)

  • 適切な列/テーブル/データベース/権限が存在し、定義されています(テーブルに空の行がある場合、クエリは正常に機能することを忘れないでください)

  • IDが主キーです。IDに使用した番号(1、2など)は重要ではないようです。それらを逆にすることも、101と102を使用することもできます。

  • テーブルの作成は次のようになります。CREATETABLEIFNOT EXISTS $ tablename(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)。列はユーザ​​ーによって動的に追加されます。したがって、現在、テーブルには約100個の列があります(これは問題ではないことに注意してください。私は1つの列のみを更新しようとしています。テーブルにデータがある場合、その更新は正常に機能します)

  • そこでCount(*)クエリをスニークすると、行作成されたことがわかりますが、Updateステートメントの後で消えます。(おそらく、行が完了していないか、何かがあり、実行する必要がある「挿入が完了していることを確認する」クエリがありますか?)

4

1 に答える 1

1

このコードを試してください....私にとってはその作品です....

INSERT INTO `input` (ID) VALUES('1');
UPDATE `input` SET `vendor_name` = 'some name' WHERE ID=1
于 2012-06-14T19:07:09.387 に答える