在MySQL中获取更新的值,而不是受影响的行

我一直在寻找这个问题的答案,但是在我所有的研究中都没有找到任何确定的“是”或“否”。

我正在运行一个简单的MySQL查询,如下所示:

 UPDATE item SET `score`=`score`+1 WHERE `id`=1

该查询是否有办法返回更新的值,而不是受影响的行数?作为参考,我正在用PHP进行此操作,因此实际代码如下所示:

 $sql = "UPDATE item SET `score`=`score`+1 WHERE `id`=1";

$new_value = mysql_query($sql);

//Unfortunately this does not return the new value

我知道我可以进行第二次查询,而只是选择值,但是我正在尝试尽可能减少查询。有办法吗?

回答:

您可以使用更新后的存储过程来执行此操作,然后将新值选择到输出参数中。以下返回new_score具有新值的一列。

DELIMITER $$   -- Change DELIMITER in order to use ; withn 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 ;

在PHP中:

$result = mysql_query("CALL increment_score($id)");

$row = mysql_fetch_array($result);

echo $row['new_score'];

以上是 在MySQL中获取更新的值,而不是受影响的行 的全部内容, 来源链接: utcz.com/qa/417040.html

回到顶部