Использование только MySQL - если я сделаю базовое обновление для такой таблицы:
UPDATE `SOMETABLE` SET `NAME` = 'John' WHERE `ID` = 1;
И значение NAME
= 'John' уже было 'John' - другими словами - ничего нового, нечего обновлять. MySQL возвращает «Затронутые строки: 0 (запрос занял 0,0007 секунды)»
Если я сделаю тот же вызов - теперь использую CodeIgniter - и затем извлечу затронутые строки следующим образом:
$data = array(
'NAME' => 'John'
);
$this->db->where('ID', 1);
$this->db->update('SOMETABLE', $data);
$affect = $this->db->affected_rows();
echo $affect; // $affect echos 1
$ effect оказывается равным 1. У меня нет проблем с этим - я просто ожидал, что, если бы нечего было обновлять, этот codeigniter будет вести себя так же, как MySQL, и не будет редактировать то, что делает не нужно обновлять, и верните 0 для connected_rows ().
- Я что-то неправильно понял?
- Codeigniter перезаписывает "John"? или не?