我有一个关于prepare()方法的问题。我有这样的查询:
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,我必须在执行中复制$ value,如果没有复制,还有其他问题要做吗?
谢谢
您可以使用:
ON DUPLICATE KEY UPDATE value = VALUES(value)
另请参见MySQL文档:http : //dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html,特别是:
您可以在UPDATE子句中使用VALUES(col_name)函数来引用INSERT ... ON DUPLICATE KEY UPDATE语句的INSERT部分中的列值。换句话说,ON DUPLICATE KEY UPDATE子句中的VALUES(col_name)指的是在没有重复键冲突的情况下将要插入的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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句