Récupération de plusieurs jeux de résultats avec la procédure stockée dans php / mysqli
J'ai une procédure stockée qui a plusieurs jeux de résultats. Comment fais-je pour le 2ème jeu de résultats dans mysqli pour obtenir ces résultats?
Disons que c'est une procédure stockée comme:
create procedure multiples( param1 INT, param2 INT )
BEGIN
SELECT * FROM table1 WHERE id = param1;
SELECT * FROM table2 WHERE id = param2;
END $$
Le PHP est quelque chose comme ceci:
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');
mysqli_stmt_bind_param( $stmt, 'ii', $param1, $param2 );
mysqli_stmt_execute( $stmt );
mysqli_stmt_bind_result( $stmt, $id );
Ensuite c'est la partie que je ne peux pas me rendre au travail. J'ai essayé d'utiliser mysqli_next_result pour passer à la prochaine jeu de résultats, mais ne peut pas le faire fonctionner. Nous avons fait de l'obtenir pour fonctionner avec mysqli_store_result et mysqli_fetch_assoc/tableau/ligne, mais pour une raison que tous les entiers sont retournées comme des chaînes vides.
De toute autre personne à venir à travers ce et avez une solution?
source d'informationauteur MacAnthony
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez manqué quelque chose (ce qui suit n'a pas été testé):
À l'aide de
PDO
votre code devrait ressembler à:Mais j'ai entendu dire que le
PDOStatement::nextRowset()
n'est pas mis en œuvre avec la MySQL driver PDO rendant impossible à récupérer plusieurs jeux de résultats:Ainsi, en fonction de votre version de PHP, vous devez coller avec votre
mysqli
-solution. Par la route: utilisez-vous la procédure de style délibérément? À l'aide de style orienté objet avecmysqli
votre code d'examiner d'un peu plus attrayant (mon opinion personnelle).Il ressemble à MySQLi ne peuvent soutenir plusieurs ensembles de résultats par le biais de
mysqli_multi_query()
depuisMySQLi_STMT
objets fonctionnent différemment deMySQLi_Result
objets.AOP semble être un peu plus abstraite, avec la PDOStatement objets d'être en mesure de gérer plusieurs ensembles de résultats pour les deux questions régulières (
PDO::query
) et les requêtes préparées(PDO:prepare
).Cela a vraiment bien fonctionné pour moi, il va faire face à (par exemple) comme de nombreuses Listes de sélection qu'il y a dans votre SP. Notez comment vous devez fermer l' $appelez AVANT de vous peut alors obtenir les paramètres de SORTIE de votre SP...
Et c'est ce que la sortie du code ci-dessus ressemble à l'aide de mon test_lists SP...