首頁 >後端開發 >php教程 >如何在 PHP 中使用 MySQLi 從預存程序中檢索多個結果集?

如何在 PHP 中使用 MySQLi 從預存程序中檢索多個結果集?

Barbara Streisand
Barbara Streisand原創
2024-11-01 08:58:02802瀏覽

How do I retrieve multiple result sets from a stored procedure using MySQLi in PHP?

使用 MySQLi 從預存程序中擷取多個結果集

您的預存程序「multiples」會產生多個結果集。若要前進到後續結果集並從中擷取數據,請使用MySQLi 擴充功能執行下列步驟:

PHP 流程樣式:

<code class="php">// Prepare the statement
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');

// Bind parameters
mysqli_stmt_bind_param($stmt, 'ii', $param1, $param2);

// Execute the statement
mysqli_stmt_execute($stmt);

// Fetch the first result set
$result1 = mysqli_stmt_get_result($stmt);
while ($row1 = $result1->fetch_assoc()) {
  echo "Result 1: " . $row1['id'] . "\n";
}

// Advance to the second result set
mysqli_stmt_next_result($stmt);
$result2 = mysqli_stmt_get_result($stmt);

// Fetch and print the second result set
while ($row2 = $result2->fetch_assoc()) {
  echo "Result 2: " . $row2['id'] . "\n";
}

// Close the statement
mysqli_stmt_close($stmt);</code>

PHP 物件-定向樣式:

<code class="php">// Create a prepared statement object
$stmt = $db->prepare('CALL multiples(?, ?)');

// Bind parameters
$stmt->bind_param('ii', $param1, $param2);

// Execute the statement
$stmt->execute();

// Fetch the first result set
$result1 = $stmt->get_result();
while ($row1 = $result1->fetch_assoc()) {
  echo "Result 1: " . $row1['id'] . "\n";
}

// Advance to the second result set
$stmt->next_result();

// Store and print results from the second result set
$result2 = $stmt->get_result();
while ($row2 = $result2->fetch_assoc()) {
  echo "Result 2: " . $row2['id'] . "\n";
}

// Close the statement
$stmt->close();</code>

附加說明:

  • 前進到下一個結果集後,必須先取得並處理它,然後才能取得繼續到下一個。
  • 如果您的預存程序產生作為空字串傳回的整數,請檢查資料庫表中的列類型。
  • 考慮在 MySQLi 中使用物件導向的樣式以實現更乾淨以及更多封裝的程式碼結構。

以上是如何在 PHP 中使用 MySQLi 從預存程序中檢索多個結果集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn