gpt4 book ai didi

php - Zend_Db_Statement_Pdo->用参数中的表达式执行

转载 作者:行者123 更新时间:2023-11-29 02:33:34 24 4
gpt4 key购买 nike

我尝试使用“on duplicate”部分执行插入语句。据我所知 Zend 不支持这个,所以我使用简单的语句:

$sql = "INSERT INTO agent(`inn`, `name`, `created`) VALUES(:inn, :name, :created) ON      
DUPLICATE KEY UPDATE `inn` = :inn, `name` = :name, `created` = :created";
$stmt = $this->db->prepare($sql);
$stmt->execute($bind);

$bind - 是数组:

array(
'inn'=>1234567890,
'name'=>'test user',
'created' = new Zend_Db_Expr('NOW()')
);

如果我通过 phpMyAdmin 尝试这个查询 - 一切正常,但在执行脚本后,“已创建”列的值为“0000-00-00 00:00:00”。

什么鬼?

最佳答案

您不能将表达式用作预准备语句中占位符的参数。它将被解释为一个字符串。这与 zend 框架无关。

您可以在 php 中创建格式化的日期字符串并使用它,或者在准备好的语句中使用 now(),例如

 VALUES(:inn, :name, NOW())

另一种解决方案,如果您有时需要提供日期时间,有时需要使用 NOW(),则使用条件语句来检查特定情况

 VALUES(:inn, :name, IF(:created = 'NOW()', NOW(), :created))

关于php - Zend_Db_Statement_Pdo->用参数中的表达式执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8910338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com