3 回答

TA貢獻1840條經驗 獲得超5個贊
我認為你應該在循環時提及數組的索引。并且你$x必須從0
$bookingIds; // contaning two values 176,190
$counts = count($bookingIds); // counting array values
for ($x = 0; $x < $counts; $x++)
{
$data = array('approved' => "1");
$this->db->where('bookingId', $bookingIds[$x]);
$this->db->update('notifications', $data);
}

TA貢獻1810條經驗 獲得超4個贊
使用 foreach 來重構上述內容以消除整個索引問題將是
$data = array('approved' => "1");
foreach ($bookingsIds as $bookingId )
{
$this->db->where('bookingId', $bookingId);
$this->db->update('notifications', $data);
}

TA貢獻1780條經驗 獲得超1個贊
看起來你正在使用一個框架;如果它提供了一個whereIn()
方法,使用它會更有效(運行更少的 SQL 查詢):
$data = ['approved' => '1'];$this->db ->whereIn('bookingId', $bookingIds) ->update('notifications', $data);
(請注意,您不能將數千個值放入這樣的“where in”子句中,因為查詢會很大。就我個人而言,我會分塊處理此類內容,例如每個查詢 500 條記錄。)
(另外,如果“where in”數組(此處為 )為空,請確保不會發生錯誤$bookingIds
。這是一種特殊情況,框架必須正確處理。)
- 3 回答
- 0 關注
- 166 瀏覽
添加回答
舉報