我有以下代码,应该在我的数据库中更新update_this
列,以获取存储在数组中的ID列表:
// id NUMBER
// update_this CHAR(1 CHAR)
$sql = '
UPDATE my_table
SET update_this = :update_this
WHERE id IN(:ids)
';
$binds = array(
'update_this' => '1',
'ids' => implode(',', $ids)
);
$db->Execute($sql, $binds);
但是当我运行它时,我以消息“ ORA-01461结束:只能插入一个LONG值才能插入LONG列”。我尝试将ids
与'ids' => $ids
绑定为数组,但后来我失败了“ ORA-01008:并非所有变量绑定”。将数组绑定到IN()
的正确方法是什么?
答案 0 :(得分:0)
@ user2943773明显误解了我的评论:
$ids = array(1,5,123,1000,5236);
$sql = '
UPDATE my_table
SET update_this = ?
WHERE id IN(' . implode(',',array_fill(0, count($ids),'?')) . ')
';
$binds = array('1') + $ids;
$db->Execute($sql, $binds);
答案 1 :(得分:-1)
你能试试吗
$ids = array( '1', '5', '123', '1000', '5236');
$ids = array_combine(range(2, count($ids)+1), $ids);
$ids[1] = 1; // For update_this
$inQuery = implode(',', array_fill(0, count($ids), '?'));
$sql = 'UPDATE my_table
SET update_this = ?
WHERE id IN('.$inQuery.')';
$db->Execute($sql, $ids);