在 Zend 中查询类似“关于重复键更新”


Query like "ON DUPLICATE KEY UPDATE" in Zend

我有一个关于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));                
}

使用该合成器,我必须在执行中复制$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( 函数来 请参阅插入部分的列值...上 重复密钥更新语句。换句话说,值(col_name( ON DUPLICATE KEY UPDATE 子句是指 col_name 的值 如果没有发生重复键冲突,则将插入该内容。这 函数在多行插入中特别有用。值(( 函数仅在插入中有意义...更新语句和 否则返回 NULL。例:

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);