簡體   English   中英

在准備好的語句中將數組綁定到IN()

[英]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' => $idsids綁定為數組,但隨后失敗,出現“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM