[英]Bind array to IN() in prepared statement
我有以下代碼,應該更新數據庫中的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()
的正確方法是什么?
@ 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);
你可以試試這個嗎
$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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.