私はこれらの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ステートメントの後で消えます。(おそらく、行が完了していないか、何かがあり、実行する必要がある「挿入が完了していることを確認する」クエリがありますか?)