在 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 la? ohne aufwendige 解決方法zurückgreifen zu穆森。
以上是如何在 MySQL 中檢索更新的值而不是受影響的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!