我想修改此 MySQL 查询以仅在该行不存在时插入该行。否则,我想更新现有行。
<?php
$query = mysql_query("UPDATE hqfjt_email_history SET datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname']
WHERE emailformname = ['emailformname'] AND leadname = ['leadname']") or die(mysql_error());
?>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 编辑>>
这是正确的吗?
INSERT INTO hqfjt_email_history datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname'] ON DUPLICATE KEY UPDATE hqfjt_email_history SET datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname']
WHERE emailformname = ['emailformname'] AND leadname = ['leadname']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
我已经尝试了上面的方法并得到了错误: 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 'datesent = ['datesent'],emailformname = ['emailformname'],leadname = ['leadname'' 附近使用的正确语法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
更新! 好的,我试过了,它创建了记录:
但如果我这样做,什么也不会发生,什么都不会更新或创建 ????? :
<?php
$query = mysql_query("
INSERT INTO hqfjt_email_history (id, leadname, emailformname, datesent)
VALUES
('$_POST[id]','$_POST[leadname]','$_POST[emailformname]','$_POST[datesent]') ON DUPLICATE KEY UPDATE hqfjt_email_history (datesent) VALUES ('$_POST[datesent]') WHERE id = '$_POST[id]'");
?>
最佳答案
是的,使用 INSERT INTO ... ON DUPLICATE KEY UPDATE
语法。
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
您需要在 UNIQUE
或 PRIMARY KEY
类型的表上定义一个键。
关于php - 如果不存在则创建一个 mysql 记录,否则更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666569/