gpt4 book ai didi

zend-framework - 在 Zend 中使用 IN 运算符时出现错误 `update statement`

转载 作者:行者123 更新时间:2023-12-03 22:44:08 24 4
gpt4 key购买 nike

我有一个函数想要执行如下语句:

UPDATE coupon_users SET status = status | '1' WHERE id IN ('3','4')

coupon_users 模型中,我编写了如下方法:

/**
* @param array $ids #array(3,4)
* @param array $status #1
*/
public function updateStatus(array $ids, $status)
{
$result = $this->_db->query(
"UPDATE {$this->_name} SET status = status | ? WHERE id IN (?)",
array(
$status,
$ids
)
)->execute();
return $result;
}

但查询总是:

UPDATE coupon_users SET status = status | '1' WHERE id IN ('Array')

我不知道我这里有什么问题,请帮助我,非常感谢。

最佳答案

根据PDO documentation (Zend_Db 使用 PDO 作为其数据库访问后端):

You cannot bind multiple values to a single named parameter in, for example, the IN() clause of an SQL statement.

因此,您可能需要进一步准备您的查询,以便它包含与数组中的元素一样多的标记。可能的解决方案如下:

// Compose the query
$queryToExecute = "UPDATE {$this->_name} SET status = status | ? WHERE id IN (";
$questionMarks = array();
for ($id in $ids) {
$questionMarks[] = '?';
}
$queryToExecute .= implode(',', $questionMarks);
$queryToExecute .= ')';

// $queryToExecute should have the format "UPDATE ... WHERE id IN (?,?,?,...?)"

// Execute it
$result = $this->_db->query(
$queryToExecute,
array($status, $ids)
)->execute();

希望对你有帮助,

关于zend-framework - 在 Zend 中使用 IN 运算符时出现错误 `update statement`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938261/

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