Zend中的“ON DUPLICATE KEY UPDATE”查询
问题描述:
我有一个关于prepare()方法的问题。我有这样一个查询:Zend中的“ON DUPLICATE KEY UPDATE”查询
public function updateParam($id, $param, $value){
// Change BDD
$db = Zend_Registry::get("db_foo");
// Prepare query
$insert = $db->prepare(
'INSERT INTO TP_bar (id, type, value)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
value = ?');
// Execute query
$insert->execute(array($id, $param, $value, $value));
}
随着那synthax,我在重复$值我执行,没有任何其他问题做到不重复?
感谢
答
你可以使用:
ON DUPLICATE KEY UPDATE value = VALUES(value)
又见文档为MySQL:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html,具体如下:
您可以使用VALUES(COL_NAME)函数UPDATE子句中到 指的是INSERT ... ON DUPLICATE KEY UPDATE语句的INSERT部分中的列值。换句话说, 中的VALUES(col_name),ON DUPLICATE KEY UPDATE子句指的是在没有发生重复键冲突时将插入的col_name 的值。这个 函数在多行插入中特别有用。 VALUES() 函数仅在INSERT ... UPDATE语句中有意义,否则 返回NULL。例如:
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
正是我在找什么!谢谢 ;-) – Snabow 2014-12-03 13:38:57