Maison >base de données >tutoriel mysql >Comment récupérer la valeur mise à jour au lieu des lignes affectées dans MySQL ?

Comment récupérer la valeur mise à jour au lieu des lignes affectées dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 05:40:02278parcourir

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

Récupération de la valeur mise à jour dans MySQL au lieu des lignes affectées

Dans MySQL, une tâche courante consiste à incrémenter la valeur d'une colonne spécifique dans une table. Bien que l'instruction UPDATE permette des mises à jour faciles, elle renvoie généralement le nombre de lignes affectées, laissant les utilisateurs sans accès direct à la valeur mise à jour.

Malgré des recherches approfondies, la question de savoir s'il existe une solution MySQL native pour récupérer la valeur mise à jour. la valeur mise à jour plutôt que le décompte reste sans réponse. Cependant, une solution de contournement intelligente utilisant des procédures stockées peut fournir une alternative viable.

Solution de procédure stockée

En créant une procédure stockée, nous pouvons effectuer l'opération de mise à jour, puis renvoyer la valeur mise à jour en sortie. paramètre. Voici un exemple d'une telle procédure :

<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>

Implémentation PHP

Pour utiliser cette procédure stockée en PHP, nous pouvons utiliser la fonction mysql_query avec le préfixe CALL :

<code class="php">$result = mysql_query("CALL increment_score($id)");
$row = mysql_fetch_array($result);
echo $row['new_score'];</code>

Ce code exécutera d'abord la procédure stockée, en incrémentant la colonne de score pour l'identifiant spécifié. Anschließend ruft es den Wert von score ab und gibt ihn als new_score aus.

Par l'utilisation des procédures de gestion, lassen sich sowohl die Abfrageanzahl reduzieren als auch der direct Zugriff auf den aktualisierten Wert ermöglichen, ohne auf aufwendige Workarounds zurückgreifen zu müssen.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn