Maison  >  Article  >  développement back-end  >  Comment récupérer plusieurs jeux de résultats à partir d’une procédure stockée à l’aide de MySQLi en PHP ?

Comment récupérer plusieurs jeux de résultats à partir d’une procédure stockée à l’aide de MySQLi en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 08:58:02709parcourir

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

Récupération de plusieurs ensembles de résultats à partir d'une procédure stockée avec MySQLi

Votre procédure stockée, « multiples », génère plusieurs ensembles de résultats. Pour avancer et récupérer les données des ensembles de résultats suivants, suivez ces étapes à l'aide de l'extension MySQLi :

Style procédural 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>

Object PHP - Style orienté :

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

Remarques supplémentaires :

  • Après être passé à l'ensemble de résultats suivant, vous devez le récupérer et le traiter avant de passer à autre chose. au suivant.
  • Si votre procédure stockée génère des entiers qui sont renvoyés sous forme de chaînes vides, vérifiez les types de colonnes dans votre table de base de données.
  • Envisagez d'utiliser un style orienté objet avec MySQLi pour un rendu plus propre. et une structure de code plus encapsulée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn