"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment récupérer des variables de sortie à partir de procédures stockées MySQL en PHP avec PDO ?

Comment récupérer des variables de sortie à partir de procédures stockées MySQL en PHP avec PDO ?

Publié le 2024-11-18
Parcourir:972

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

Récupération des variables de sortie de procédure stockée en PHP avec PDO

Objectif : Récupérez la valeur LAST_INSERT_ID() d'une procédure stockée MySQL et attribuez-la à une variable PHP.

Énoncé du problème

Malgré le code PHP fourni utilisant les liaisons PDO, il ne parvient pas à capturer la variable de sortie LAST_INSERT_ID() de la procédure stockée simpleProcedure.

Explication

La récupération des variables de sortie des procédures stockées MySQL dans PHP PDO implique un processus en deux étapes :

  1. Exécution de la procédure stockée et attribution des variables de sortie aux variables utilisateur MySQL.
  2. Interrogation des variables utilisateur MySQL pour récupérer leurs valeurs dans des variables PHP.

Solution : processus en deux étapes

Étape 1 : exécution de la procédure

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();

En liant l'espace réservé :returnid à INOUT, PDO transmettra non seulement la variable PHP à la procédure, mais la mettra également à jour avec la valeur de la variable de sortie.

Étape 2 : Récupération de la variable de sortie

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

Interrogez la variable utilisateur MySQL @returnid pour attribuer sa valeur à la variable PHP $lastInsertId.

Remarque

Liaison PHP Les variables des paramètres INOUT et OUT pour les procédures MySQL peuvent rencontrer des erreurs d'exécution. Il est recommandé de lier uniquement les variables aux paramètres IN.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3