Maison > Article > base de données > Comment récupérer les variables de procédure stockée MySQL à l'aide de PDO en PHP ?
Récupérer les variables de procédure stockée MySQL à l'aide de PDO en PHP
Récupérer la valeur de LAST_INSERT_ID() à partir d'une procédure stockée MySQL peut être une tâche ardue . Malgré une abondante documentation en ligne, le processus s'avère souvent insaisissable pour de nombreux développeurs. Cet article vise à démystifier ce problème, en fournissant un guide étape par étape pour récupérer la valeur de la variable à l'aide de PHP PDO.
Paramètres de procédure PHP avec 'IN', 'INOUT' et 'OUT'. Paramètres
La clé pour récupérer la variable est de comprendre le processus en deux étapes impliqué. Tout d'abord, la procédure doit être exécutée avec les paramètres d'entrée nécessaires et les variables qui stockeront les résultats. Par la suite, une requête distincte est exécutée pour récupérer les valeurs des variables désignées.
Processus en deux étapes pour récupérer les procédures stockées MySQL à l'aide de PDO
Pour démontrer ce processus, Considérons le scénario suivant :
Procédure SQL :
CREATE PROCEDURE `demoSpInOutSqlVars`(IN pInput_Param INT, INOUT pInOut_Param INT, OUT pOut_Param INT) BEGIN /* * Pass the full names of SQL User Variable for these parameters. e.g. '@varInOutParam' * These 'SQL user variables names' are the variables that Mysql will use for: * 1) finding values * 2) storing results * * It is similar to 'variable variables' in PHP. */ SET pInOut_Param := ABS(pInput_Param) + ABS(pInOut_Param); /* always positive sum */ SET pOut_Param := ABS(pInput_Param) * -3; /* always negative * 3 */ END
Code PHP :
// DB Connection $db = appDIC('getDbConnection', 'default'); // get the default db connection $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // Set PHP Variables $phpInParam = 5; $phpInOutParam = 404; // PHP InOut variable $phpOutParam = null; // PHP Out variable // Define and Prepare the SQL procedure call $sql = "call demoSpInOut(:phpInParam, @varInOutParam, /* mysql variable name will be read and updated */ @varOutParam)"; /* mysql variable name that will be written to */ $stmt = $db->prepare($sql); // Bind PHP Variables and Set SQL Variables $stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT); $db->exec("SET @varInOutParam = $phpInOutParam"); // This is safe as it just sets the value into the MySql variable. // Execute the procedure $allOk = $stmt->execute(); // Get the SQL Variables into the PHP variables $sql = "SELECT @varInOutParam AS phpInOutParam, @varOutParam AS phpOutParam FROM dual"; $results = current($db->query($sql)->fetchAll()); $phpInOutParam = $results['phpInOutParam']; $phpOutParam = $results['phpOutParam']; // Display the PHP variables echo "phpInParam = " . $phpInParam . "\n"; echo "phpInOutParam = " . $phpInOutParam . "\n"; echo "phpOutParam = " . $phpOutParam . "\n";
Remarques supplémentaires :
Conclusion :
La récupération des variables de procédure stockée MySQL dans PHP PDO est un processus à multiples facettes qui implique l'exécution de la procédure et récupérer les valeurs des variables utilisateur SQL. En suivant les étapes décrites ci-dessus, les développeurs peuvent accéder efficacement aux variables requises à partir des procédures stockées MySQL à 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!