php - 如果不存在则创建一个 mysql 记录,否则更新它

标签 php mysql

我想修改此 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

您需要在 UNIQUEPRIMARY KEY 类型的表上定义一个键。

关于php - 如果不存在则创建一个 mysql 记录,否则更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666569/

相关文章:

php - 如何在mysql中选择不同列的总和

php - Wordpress 要求提供 FTP 凭据以进行升级

php - 保留项目的元数据,并在结帐时检索完成

javascript - POST数据动态选择不发送

java - org.springframework.beans.factory.UnsatisfiedDependencyException : 问题

mysql - 按 ID 从 2 个表中选择 SQL WHERE 子句

php - Php+MySql应用程序响应慢

mysql - 具有多联合的重复条目

mysql - 使用外键复制多条记录

php - 我如何定义 if 条件来检查 array_key 长度是否=13?