Maison > base de données > tutoriel mysql > Comment récupérer la sortie de procédures stockées avec des paramètres OUT à l'aide de PDO ?

Comment récupérer la sortie de procédures stockées avec des paramètres OUT à l'aide de PDO ?

Linda Hamilton
Libérer: 2024-11-07 08:12:02
original
924 Les gens l'ont consulté

How to Retrieve Output from Stored Procedures with OUT Parameters Using PDO?

Appel de procédures stockées avec des paramètres OUT à l'aide de PDO

Dans la programmation de bases de données, les procédures stockées sont essentielles pour encapsuler des opérations de bases de données complexes. Récupérer le résultat des procédures stockées à l'aide de PDO peut être difficile.

Problème :
Lors de l'appel d'une procédure stockée avec un paramètre OUT à l'aide de PDO, vous pouvez rencontrer une erreur du type :

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
Copier après la connexion

Solution :
PDO s'attend à ce que les paramètres OUT soient récupérés à l'aide d'une requête distincte. Les étapes suivantes décrivent l'approche correcte :

  1. Préparer la déclaration PDO :

    $stmt = $db->prepare("CALL proc_OUT(?)");
    Copier après la connexion
  2. Lier le paramètre OUT :

    $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
    Copier après la connexion
  3. Exécuter la procédure stockée :

    $stmt->execute();
    Copier après la connexion
  4. Interroger le paramètre OUT :

    $stmt2 = $db->query("SELECT @return_value");
    $row = $stmt2->fetch(PDO::FETCH_NUM);
    $return_value = $row[0];
    Copier après la connexion

Exemple :
Voici un exemple d'appel d'une procédure stockée avec un paramètre OUT :

$db = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");

// Stored procedure definition
$sql = "CREATE PROCEDURE proc_OUT (OUT var1 VARCHAR(100))
BEGIN
    SET var1 = 'This is a test';
END";
$db->query($sql);

// Call the stored procedure
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();

// Query the OUT parameter
$stmt2 = $db->query("SELECT @return_value");
$row = $stmt2->fetch(PDO::FETCH_NUM);
$return_value = $row[0];

echo $return_value; // Output: 'This is a test'
Copier après la connexion

En suivant cette approche, vous pouvez appeler avec succès des procédures stockées avec des paramètres OUT à l'aide de PDO.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal