2009-07-06 3 views
0

У меня есть запрос MySQL, который идет следующим образом (с использованием Zend_Db):извлечения последнего обновления столбца в MySQL

$sql = $handle->quoteInto("UPDATE board SET rank=rank+1 WHERE post_id=?", $postid); 
$handle->query($sql); 

(Ранг не Автоинкрементный PK). Я бы хотел получить значение rank без предварительного форматирования другого запроса. Я пробовал $handle->lastInsertId();, но он, похоже, не работает, поскольку я не использовал естественный метод автоинкремента MySQL (я не могу - rank - это ранг сообщения. Я либо ++, либо - это.)

Любой способ сделать это с предварительной подготовкой другого запроса? Функция, которая вернет последнее измененное значение?

ответ

2

Я не верю, что это возможно - вам просто нужно сделать SELECT.

+0

Да я напуган так: 'запрос ("? SELECT FROM WHERE ID = 'lastId'")' – shkschneider

0

Вы можете использовать функцию LAST_INSERT_ID, которую MySQL предоставляет для установки значения, а затем сделать ее доступной с помощью функции mysql_insert_id() C, на которую опирается $handle->lastInsertId();.

Ниже приводится обновленная версия фрагмент кода с изменениями last_insert_id, внесенные в него:

$sql = $handle->quoteInto("UPDATE board SET rank=LAST_INSERT_ID(rank+1) WHERE post_id=?", $postid); 
$handle->query($sql); 

Позвольте мне знать, если у вас есть какие-либо вопросы.

НТН,

-Dipin