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 关注
- 133 浏览
添加回答
举报