有没有办法做一个“插入...在Zend Framework 1.5中的重复密钥更新“?

2022-08-30 10:54:13

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

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

答案 1

我为Zend工作,专门研究Zend_Db相当多。

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

我不建议像harvejs所示的那样将值插入到SQL中。使用查询参数。

编辑:您可以使用表达式避免重复参数。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 UPDATEVALUES()

$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


推荐