Maison > base de données > tutoriel mysql > le corps du texte

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

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!