Zend_Db_Table — обновление не работает

Код кажется не работает.

// $counter is an instance of Zend_Db_Table_Abstract
$counter->update(array('hits' => 'hits+1'), '"id" = 1');

Я заглянул в профилировщик БД и нашел следующий запрос:

UPDATE `downloads` SET `hits` = ? WHERE ("id" = 1)

person Poru    schedule 13.03.2010    source источник


Ответы (1)


Вам нужно использовать экземпляр Zend_Db_Expr (выражение SQL), чтобы заставить это работать (непроверено):

$counter->update(array('hits' => new Zend_Db_Expr( 'hits+1' ) ), 'id = 1');

... или что-то подобное, я считаю, должно работать. Сообщите, если это не сработает, и я придумаю проверенный ответ.

ОБНОВЛЕНИЕ:
Хорошо, я протестировал его, и он работает, при условии, что вы освободили кавычки вокруг id в предложении where. id следует интерпретировать не как литеральную строку, а как имя столбца. Может быть, вы вместо этого используете обратные кавычки? Например, '`id` = 1'. Это правильный способ указать идентификатор для MySQL.

person Decent Dabbler    schedule 13.03.2010