0

我有一个如下的 MySQL 查询(使用 Zend_Db):

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

(排名不是自动递增的 PK)。我现在想在rank不执行另一个查询的情况下检索 的值。我已经尝试过$handle->lastInsertId();,但它似乎不起作用,因为我没有使用 MySQL 的自然自动递增方法(我不能 -rank是帖子的排名。我要么 ++ 要么 - 它。)

有什么方法可以通过执行另一个查询来做到这一点?将返回最后更改的值的函数?

4

2 回答 2

2

我不相信这是可能的 - 你只需要做一个SELECT.

于 2009-07-06T15:45:27.303 回答
0

您可以使用 MySQL 提供的LAST_INSERT_ID函数来设置一个值,然后通过依赖的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);

如果您有任何问题,请告诉我。

高温下,

-蘸

于 2009-07-06T20:29:13.537 回答