У меня возникла проблема при попытке увеличить на 1 поле в моем поле. Я пробовал и без активных записей.
Мои функции выглядят так (в моей модели)
function _set_reads($id){ $this->db->set('reads', 'reads+1', FALSE) $this->db->where('id', $id); $this->db->update('article'); }
а также
function _set_reads($id){ $sql = 'update article set reads=reads+1 where id=?'; $this->db->query($sql, array($id)); }
Я получаю ту же ошибку в обоих случаях, и это следующее сообщение об ошибке:
Error Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'reads+1 WHERE `id` = '15'' at line 1 UPDATE `article` SET `reads` = reads+1 WHERE `id` = '15'
Я использую последнюю версию MAMP
– Требуется небольшая коррекция
$this->db->where('id', $id); $this->db->set('set_row', '`set_row`+ 1', FALSE);
Спасибо
Решил: мне пришлось изменить
$this->db->set('reads', 'reads+1', FALSE)
в
$this->db->set('reads', '`reads+1`', FALSE)
Извините за сообщение …
set () также примет дополнительный третий параметр ($escape)
, который предотвратит экранирование данных, если установлено значение FALSE
.
Это было очень полезно для @syyu
$this->db->where('id', $id); $this->db->set('set_row', '`set_row`- 1', FALSE); // to decrement