Maison  >  Article  >  base de données  >  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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-06 09:57:02245parcourir

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érer la valeur LAST_INSERT_ID() d'une procédure stockée MySQL et l'attribuer à 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écuter la procédure stockée et attribuer 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 du 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 des variables PHP à 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.

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