ホームページ >データベース >mysql チュートリアル >MySQL で影響を受ける行の代わりに更新された値を取得するにはどうすればよいですか?
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 スコア 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 glichen、ohne auf aufwendige 回避策 zurückgreifen zuミュッセン。
以上がMySQL で影響を受ける行の代わりに更新された値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。