dongzhang7157 2014-12-03 13:19
浏览 14
已采纳

在Zend中查询“ON DUPLICATE KEY UPDATE”

I have a question about prepare() method. I have a query like this one :

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));                
}

With that synthax, I have to duplicate $value in my execute, there is any other issue to do this without duplicate ?

Thanks

  • 写回答

1条回答 默认 最新

  • dpf7891 2014-12-03 13:21
    关注

    You could use:

    ON DUPLICATE KEY UPDATE value = VALUES(value)
    

    See also the docs for MySQL: http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html, specifically:

    You can use the VALUES(col_name) function in the UPDATE clause to refer to column values from the INSERT portion of the INSERT ... ON DUPLICATE KEY UPDATE statement. In other words, VALUES(col_name) in the ON DUPLICATE KEY UPDATE clause refers to the value of col_name that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. The VALUES() function is meaningful only in INSERT ... UPDATE statements and returns NULL otherwise. Example:

    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝