Maison >base de données >tutoriel mysql >Comment récupérer la valeur mise à jour au lieu des lignes affectées dans MySQL ?
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.
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>
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!