php - ON DUPLICATE KEY UPDATE 在 PDO 中不起作用

标签 php mysql

INSERT INTO b (id, website...) 
VALUES (:id, :website...)
ON DUPLICATE KEY UPDATE  
website=:website ...

我有一个 MYSQL 查询,我有唯一的 SET id,为什么

website=:website ...

不起作用,当我更改为 website="whatever" 时它起作用了。有人知道为什么吗?

$job_B->bindValue(':website', $website, PDO::PARAM_STR);

最佳答案

作为一般提示,您在执行 ON DUPLICATE KEY 时不应“复制”插入的值。 Mysql为此提供了VALUES()函数,例如

INSERT INTO foo (bar) VALUES (:baz)
ON DUPLICATE KEY UPDATE bar := :baz

可以更好地重写为

INSERT INTO foo (bar) VALUES (:baz)
ON DUPLICATE KEY UPDATE bar = VALUES(bar)
                              ^^^^^^^^^^^

VALUES() 将自动重新使用分配给 VALUES (...) 部分中指定字段的值,而不需要将另一个变量绑定(bind)到查询中.

关于php - ON DUPLICATE KEY UPDATE 在 PDO 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028860/

相关文章:

mysql - 查找两列上的重复条目总数

mysql - SQL查询以获取每个可能的链接

javascript - 提交文件而不刷新页面

php - 通过 Stripe Connect 进行的交易

php - 维护分类帐表中每一行的期初和期末余额

php使用next按钮限制查询pdo

PHP - MySQL 从存储过程中获取 out 参数的值

php - 当脚本从命令行运行时 spl_autoload 失败

php - Braintree 事务中未定义后置变量

mysql - 处理 10K 插入和频繁选择操作的数据库服务器设置