In MySQL besteht eine häufige Aufgabe darin, den Wert einer bestimmten Spalte in einer Tabelle zu erhöhen. Während die UPDATE-Anweisung einfache Aktualisierungen ermöglicht, gibt sie in der Regel die Anzahl der betroffenen Zeilen zurück, sodass Benutzer keinen direkten Zugriff auf den aktualisierten Wert haben.
Trotz umfangreicher Forschung stellt sich die Frage, ob es eine native MySQL-Lösung zum Abrufen gibt Der aktualisierte Wert und nicht die Anzahl bleibt unbeantwortet. Eine clevere Problemumgehung mithilfe gespeicherter Prozeduren kann jedoch eine praktikable Alternative darstellen.
Durch die Erstellung einer gespeicherten Prozedur können wir den Aktualisierungsvorgang ausführen und dann den aktualisierten Wert als Ausgabe zurückgeben Parameter. Hier ist ein Beispiel für eine solche Prozedur:
<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>
Um diese gespeicherte Prozedur in PHP zu nutzen, können wir die mysql_query-Funktion mit dem CALL-Präfix verwenden:
<code class="php">$result = mysql_query("CALL increment_score($id)"); $row = mysql_fetch_array($result); echo $row['new_score'];</code>
Dieser Code führt zunächst die gespeicherte Prozedur aus und erhöht die Score-Spalte für die angegebene 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 Workarounds zurückgreifen zu Müssen.
Das obige ist der detaillierte Inhalt vonWie rufe ich den aktualisierten Wert anstelle der betroffenen Zeilen in MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!