在 MySQL 中,常见的任务是增加表中特定列的值。虽然 UPDATE 语句允许轻松更新,但它通常会返回受影响的行数,从而使用户无法直接访问更新的值。
尽管进行了大量研究,但是否存在本地 MySQL 解决方案来检索更新值的问题更新后的值而不是计数仍未得到答复。然而,使用存储过程的巧妙解决方法可以提供可行的替代方案。
通过创建存储过程,我们可以执行更新操作,然后将更新后的值作为输出返回范围。以下是此类过程的示例:
<code class="sql">DELIMITER $$ -- Change DELIMITER in order to use ; within the procedure CREATE PROCEDURE increment_score ( IN id_in INT ) BEGIN UPDATE item SET score = score + 1 WHERE id = id_in; SELECT score AS new_score FROM item WHERE id = id_in; END $$ -- Finish CREATE PROCEDURE statement DELIMITER ; -- Reset DELIMITER to standard ;</code>
要在 PHP 中使用此存储过程,我们可以使用带有 CALL 前缀的 mysql_query 函数:
<code class="php">$result = mysql_query("CALL increment_score($id)"); $row = mysql_fetch_array($result); echo $row['new_score'];</code>
此代码将首先执行存储过程,递增指定 id 的分数列。 Anschließend ruft es den Wert von Score ab und gibt ihn als new_score aus.
Durch die Verwendung von gespeicherten Prozeduren lassen sich sowohl die Abfrageanzahl reduzieren als auch der direkte Zugriff auf den aktualisierten Wert ermöglichen, ohne aufwendige 解决方法 zurückgreifen zu穆森。
以上是如何在 MySQL 中检索更新的值而不是受影响的行?的详细内容。更多信息请关注PHP中文网其他相关文章!