創建預存過程
mysql> DELIMITER //
mysql> CREATE PROCEDURE `yejr`()
-> BEGIN
-> SHOW TABLES;
-> END; //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
mysql> CALL yejr();
+------------------+
| Tables_in_test |
+------------------+
| yejr1 |
| yejr2 |
+------------------+
PHP mysqli 調用代碼
<?php
$mysqli = new mysqli("localhost", "root", "", "test");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "CALL yejr();";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
printf("find table: %s\n", $row[0]);
}
$result->close();
}
$mysqli->close();
?>
輸出結果
find table: yejr1
find table: yejr2
關鍵點
- PHP 4 無法直接獲取預存過程結果集,需升級 PHP 5 並編譯
--with-mysqli。
mysqli::query() 返回 mysqli_result 對象,可像普通 SELECT 一樣遍歷。
- 多結果集場景需使用
mysqli::multi_query() + mysqli::next_result()。