Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich mit MySQLi in PHP mehrere Ergebnismengen aus einer gespeicherten Prozedur ab?

Wie rufe ich mit MySQLi in PHP mehrere Ergebnismengen aus einer gespeicherten Prozedur ab?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 08:58:02709Durchsuche

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

Mehrere Ergebnismengen aus einer gespeicherten Prozedur mit MySQLi abrufen

Ihre gespeicherte Prozedur „multiples“ generiert mehrere Ergebnismengen. Um zu nachfolgenden Ergebnismengen zu gelangen und Daten daraus abzurufen, befolgen Sie diese Schritte mit der MySQLi-Erweiterung:

PHP-Prozedurstil:

<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-Objekt- Orientierter Stil:

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

Zusätzliche Hinweise:

  • Nachdem Sie mit dem nächsten Ergebnissatz fortgefahren sind, müssen Sie ihn abrufen und verarbeiten, bevor Sie fortfahren können zum nächsten.
  • Wenn Ihre gespeicherte Prozedur Ints generiert, die als leere Zeichenfolgen zurückgegeben werden, überprüfen Sie die Spaltentypen in Ihrer Datenbanktabelle.
  • Erwägen Sie die Verwendung des objektorientierten Stils mit MySQLi für eine sauberere Ausführung und eine stärker gekapselte Codestruktur.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit MySQLi in PHP mehrere Ergebnismengen aus einer gespeicherten Prozedur ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn