当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在Zend Framework 1.5中执行"INSERT ... ON DUPLICATE KEY UPDATE"?

如何解决《有没有办法在ZendFramework1.5中执行"INSERTONDUPLICATEKEYUPDATE"?》经验,为你挑选了3个好方法。

我想ON DUPLICATE KEY UPDATE在Zend Framework 1.5中使用,这可能吗?

INSERT INTO sometable (...)
VALUES (...)
ON DUPLICATE KEY UPDATE ...

Bill Karwin.. 54

我曾为Zend工作,并专门研究Zend_Db.

不,ON DUPLICATE KEY UPDATE语法没有API支持.对于这种情况,您必须query()自己使用并形成完整的SQL语句.

我不建议将值插入到SQL中,如harvejs所示.使用查询参数.

编辑:您可以通过使用VALUES()表达式避免重复参数.

$sql = "INSERT INTO sometable (id, col2, col3) VALUES (:id, :col2, :col3)
  ON DUPLICATE KEY UPDATE col2 = VALUES(col2), col3 = VALUES(col3)";

$values = array("id"=>1, "col2"=>327, "col3"=>"active");


小智.. 6

作为侧边栏,您可以使用以下方法简化ON DUPLICATE KEY UPDATE子句并减少脚本需要执行的处理量VALUES():

$sql = 'INSERT INTO ... ON DUPLICATE KEY UPDATE id = VALUES(id), col2 = VALUES(col2), col3 = VALUES(col3)';

有关更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.



1> Bill Karwin..:

我曾为Zend工作,并专门研究Zend_Db.

不,ON DUPLICATE KEY UPDATE语法没有API支持.对于这种情况,您必须query()自己使用并形成完整的SQL语句.

我不建议将值插入到SQL中,如harvejs所示.使用查询参数.

编辑:您可以通过使用VALUES()表达式避免重复参数.

$sql = "INSERT INTO sometable (id, col2, col3) VALUES (:id, :col2, :col3)
  ON DUPLICATE KEY UPDATE col2 = VALUES(col2), col3 = VALUES(col3)";

$values = array("id"=>1, "col2"=>327, "col3"=>"active");



2> 小智..:

作为侧边栏,您可以使用以下方法简化ON DUPLICATE KEY UPDATE子句并减少脚本需要执行的处理量VALUES():

$sql = 'INSERT INTO ... ON DUPLICATE KEY UPDATE id = VALUES(id), col2 = VALUES(col2), col3 = VALUES(col3)';

有关更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.



3> Sergei Moroz..:

@Bill Karwin:很棒的解决方案!但是如果使用命名占位符(":id",":col1",...)而不是问题符号会更好.比你不需要通过array_marge复制值.另外,如果使用"INSERT"而不是"VALUES"的"SET"语法,则代码变得更简单,可以为任何字段集自动生成.

$sql = 'INSERT INTO sometable SET id = :id, col2 = :col2, col3 = :col3
    ON DUPLICATE KEY UPDATE id = :id, col2 = :col2, col3 = :col3';

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有