Rumah > Artikel > pangkalan data > Bagaimanakah cara saya mendapatkan pembolehubah prosedur tersimpan MySQL menggunakan PDO dalam PHP?
Mengambil semula Pembolehubah Prosedur Tersimpan MySQL menggunakan PDO dalam PHP
Mendapatkan semula nilai LAST_INSERT_ID() daripada prosedur tersimpan MySQL boleh menjadi tugas yang sukar. . Walaupun dokumentasi yang mencukupi dalam talian, proses itu sering terbukti sukar difahami oleh banyak pembangun. Artikel ini bertujuan untuk menjelaskan isu ini, menyediakan panduan langkah demi langkah untuk mendapatkan semula nilai pembolehubah menggunakan PHP PDO.
Parameter Prosedur PHP dengan 'IN', 'INOUT' dan 'OUT' Parameter
Kunci untuk mendapatkan semula pembolehubah ialah memahami proses dua peringkat yang terlibat. Pertama, prosedur mesti dilaksanakan dengan parameter input yang diperlukan dan pembolehubah yang akan menyimpan keputusan. Selepas itu, pertanyaan berasingan dilaksanakan untuk mendapatkan semula nilai daripada pembolehubah yang ditetapkan.
Proses Dua Peringkat untuk Mendapatkan Prosedur Simpanan MySQL Menggunakan PDO
Untuk menunjukkan proses ini, mari kita pertimbangkan perkara berikut senario:
SQL Prosedur:
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
Kod 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";
Nota Tambahan:
Kesimpulan:
Mengambil semula pembolehubah prosedur tersimpan MySQL dalam PHP PDO ialah proses pelbagai rupa yang melibatkan pelaksanaan prosedur dan mendapatkan semula nilai daripada pembolehubah pengguna SQL. Dengan mengikut langkah yang digariskan di atas, pembangun boleh mengakses pembolehubah yang diperlukan dengan cekap daripada prosedur tersimpan MySQL menggunakan PDO.
Atas ialah kandungan terperinci Bagaimanakah cara saya mendapatkan pembolehubah prosedur tersimpan MySQL menggunakan PDO dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!