ここで問題が発生しています。2時間のグーグルStackoverflowの回答とさまざまなアイデアのテストの後、私はそれを理解できません。うまくいけば、それはそこにいる誰かにとって簡単です。
編集:修正されました!以下の解決策を参照してください。
これが私のコードです:
// Establish Table and vars
mysql_query("CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255))");
$page = 'Hello'; $content = 'This is the content.';
// Ive tried this:
mysql_query("INSERT INTO pages SET page='$page' ON DUPLICATE KEY UPDATE content='$content'");
// Ive also tried:
mysql_query("INSERT IGNORE INTO pages SET page='$page', content='$content'"));
mysql_query("INSERT IGNORE INTO pages SET page='$page'")); // No content
期待される結果:「Hello」の「page」値(「This is thecontent。」の「content」値)で1つの行を作成します。スクリプトを2回実行しても、「ページ」の値が「こんにちは」の行がすでに存在するため、追加の行は作成されません。
観察された結果:スクリプトが実行されるたびに、ページ値が「Hello」の新しい行が作成されます。これは、重複キーではないためと考えられます。なぜ購入しませんか?AUTO_INCREMENTであるIDフィールドと主キーを持つテーブルを作成しようとしましたが、それが問題の原因であると考えたので、単純化しました。
(そのコードは:)
mysql_query("CREATE TABLE IF NOT EXISTS pages(id INT AUTO_INCREMENT NOT NULL, page varchar(255), content varchar(255), primary key (id))");
望ましい結果:「Hello」の「page」フィールドを持つ行がない場合は、新しい行をテーブルに挿入する必要があります。これが作成されたら、同じスクリプトを再度実行しても、新しい行が作成されることはありません。
ありがとうございました!
編集:修正されました!以下の解決策を参照してください。
私の解決策:
// Table needs a primary key to search for duplicates.
mysql_query("CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255), primary key (page))"); // Establish Table