Код кажется не работает.
// $counter is an instance of Zend_Db_Table_Abstract
$counter->update(array('hits' => 'hits+1'), '"id" = 1');
Я заглянул в профилировщик БД и нашел следующий запрос:
UPDATE `downloads` SET `hits` = ? WHERE ("id" = 1)
Код кажется не работает.
// $counter is an instance of Zend_Db_Table_Abstract
$counter->update(array('hits' => 'hits+1'), '"id" = 1');
Я заглянул в профилировщик БД и нашел следующий запрос:
UPDATE `downloads` SET `hits` = ? WHERE ("id" = 1)
Вам нужно использовать экземпляр Zend_Db_Expr
(выражение SQL), чтобы заставить это работать (непроверено):
$counter->update(array('hits' => new Zend_Db_Expr( 'hits+1' ) ), 'id = 1');
... или что-то подобное, я считаю, должно работать. Сообщите, если это не сработает, и я придумаю проверенный ответ.
ОБНОВЛЕНИЕ:
Хорошо, я протестировал его, и он работает, при условии, что вы освободили кавычки вокруг id
в предложении where. id
следует интерпретировать не как литеральную строку, а как имя столбца. Может быть, вы вместо этого используете обратные кавычки? Например, '`id` = 1'. Это правильный способ указать идентификатор для MySQL.