Heim >Datenbank >MySQL-Tutorial >Wie rufe ich den aktualisierten Wert anstelle der betroffenen Zeilen in MySQL ab?

Wie rufe ich den aktualisierten Wert anstelle der betroffenen Zeilen in MySQL ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 05:40:02278Durchsuche

How to Retrieve the Updated Value Instead of Affected Rows in MySQL?

Aktualisierten Wert in MySQL anstelle betroffener Zeilen abrufen

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.

Lösung für gespeicherte Prozeduren

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>

PHP-Implementierung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn