Variablen gespeicherter MySQL-Prozeduren mithilfe von PDO in PHP abrufen
Das Abrufen des Werts von LAST_INSERT_ID() aus einer gespeicherten MySQL-Prozedur kann eine entmutigende Aufgabe sein . Trotz umfangreicher Online-Dokumentation erweist sich der Prozess für viele Entwickler oft als schwer fassbar. Dieser Artikel soll dieses Problem entmystifizieren und eine Schritt-für-Schritt-Anleitung zum Abrufen des Variablenwerts mit PHP PDO bereitstellen.
PHP-Prozedurparameter mit „IN“, „INOUT“ und „OUT“ Parameter
Der Schlüssel zum Abrufen der Variablen liegt im Verständnis des zweistufigen Prozesses. Zunächst muss die Prozedur mit den notwendigen Eingabeparametern und den Variablen ausgeführt werden, die die Ergebnisse speichern. Anschließend wird eine separate Abfrage ausgeführt, um die Werte aus den angegebenen Variablen abzurufen.
Zweistufiger Prozess zum Abrufen gespeicherter MySQL-Prozeduren mithilfe von PDO
Um diesen Prozess zu demonstrieren, Betrachten wir das folgende Szenario:
SQL-Prozedur:
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
PHP-Code:
// 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";
Zusätzliche Hinweise:
Fazit:
Das Abrufen gespeicherter MySQL-Prozedurvariablen in PHP PDO ist ein vielschichtiger Prozess, der die Ausführung der Prozedur und umfasst Abrufen von Werten aus SQL-Benutzervariablen. Durch Befolgen der oben beschriebenen Schritte können Entwickler mithilfe von PDO effizient auf die erforderlichen Variablen aus gespeicherten MySQL-Prozeduren zugreifen.
Das obige ist der detaillierte Inhalt vonWie rufe ich gespeicherte MySQL-Prozedurvariablen mithilfe von PDO in PHP ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!