我在这里有一个问题,经过2个小时的谷歌搜索Stackoverflow的答案和测试不同的想法,我无法弄清楚。希望对那里的人来说,这是一个不容小觑的想法。MySQL插入IGNORE /在重复密钥更新不检测重复
编辑:修正!见下面的解决方案
这里是我的代码:
// 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
预期结果:创建一个列有“你好”的“页面”值(“这是内容的”内容'的值) 。当脚本第二次运行时,不会创建额外的行,因为已经有一行'page'值为'Hello'的行。
观察结果:每次脚本运行时,都会创建一个页面值为“Hello”的新行,因为这不是重复键。为什么不买?我试图创建一个ID为AUTO_INCREMENT和主键的表,但我认为这是造成问题,所以我简化了它。
(即代码为:)
mysql_query("CREATE TABLE IF NOT EXISTS pages(id INT AUTO_INCREMENT NOT NULL, page varchar(255), content varchar(255), primary key (id))");
所需的结果:“你好”一个新行应该插入到表中是否存在与的“页面”字段中没有列一旦创建完成,再次运行相同的脚本不应该导致新行。
谢谢!
编辑:修正!见下面的解决方案
我的解决办法:
// 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
是的,这是一个!谢谢。 – Trey