ホームページ  >  記事  >  バックエンド開発  >  PHP で MySQLi を使用してストアド プロシージャから複数の結果セットを取得するにはどうすればよいですか?

PHP で MySQLi を使用してストアド プロシージャから複数の結果セットを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 08:58:02709ブラウズ

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 Object-指向スタイル:

<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>

追加メモ:

  • 次の結果セットに進んだ後、先に進む前にそれをフェッチして処理する必要があります。
  • ストアド プロシージャが空の文字列として返される int を生成する場合は、データベース テーブルの列の型を確認してください。
  • よりクリーンな目的で、MySQLi でオブジェクト指向スタイルを使用することを検討してください。さらにカプセル化されたコード構造。

以上がPHP で MySQLi を使用してストアド プロシージャから複数の結果セットを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。