НЕ ЛАРАВЕЛ
есть один скриптец (старый). Там есть обертка под базу
$iaDb->update();
собственно обновляет записи в базе.
Есть адаптер под mysqli.
Вопрос: как узнать, выполнился ли апдейт или нет?
в гуглах почти все предлагают affected rows смотреть. То есть если больше нуля, значит апдейт успешен.
return iaDb->getAffected() > 0;
но тут есть проблема, если значения не изменились, то affected rows будет 0
а это будет считаться как ошибка
Например: есть таблица users. там есть запись: id: 1, name: 'name'
далее код:
$iaDb->update(['name' => 'name']); // значение этого поля такое же как новое
в этом случае update метод возвратит false, что я думаю неправильно.
В ларавелах я посмотрел, там есть такое:
Mo
del::save:
if($this->exists) {
$saved = $this->isDirty() ?
$this->performUpdate($query) : true;
}
то, есть если значения в модели и в базе одиннаковые - то запрос не происходит и сразу возвращается true
У нас нет функционала isDirty, поэтому надо как то решить
Что думаю я?
Мне в голову приходит мысль проверять на mysqli_errno
если эта функция возвращает 0, то со стороны мускуля не было ошибок и типа все зашибись.
то есть будет что то типа:
return ($this-getErrrorNumber() === 0);
Может еще варианты есть