Если обновляемое значение одинаковое, то делаем так:
UPDATE news SET title='test' WHERE id IN (1, 2, 3).
Если изменяемое значение для каждой записи разное, то это можно сделать таким запросом:
UPDATE news SET title = CASE WHEN news_id = 1 THEN 'aa' WHEN news_id = 2 THEN 'bb' END WHERE news_id IN (1, 2)
Описанные способы работают в 2-3 раза быстрее, чем если бы Вы использовали циклы или несколько запросов.
Обновить несколько записей в таблице с помощью Codeigniter еще проще. Разработчики позаботились об этом, и сделали одну функцию update_butch
. Почитать подробнее можно в официальной документации. Приведу пример из документации:
$data = array( array( 'title' => 'My title' , 'name' => 'My Name 2' , 'date' => 'My date 2' ), array( 'title' => 'Another title' , 'name' => 'Another Name 2' , 'date' => 'Another date 2' ) ); $this->db->update_batch('mytable', $data, 'title'); // Аналогично: // UPDATE `mytable` SET `name` = CASE // WHEN `title` = 'My title' THEN 'My Name 2' // WHEN `title` = 'Another title' THEN 'Another Name 2' // ELSE `name` END, // `date` = CASE // WHEN `title` = 'My title' THEN 'My date 2' // WHEN `title` = 'Another title' THEN 'Another date 2' // ELSE `date` END // WHERE `title` IN ('My title','Another title')