3 votes

mysqli_result ne semble pas implémenter l'interface Iterator

El Documents PHP indique qu'à partir de la version 5.4 et suivantes :

Itérateur a été ajouté, comme mysqli_résultat met désormais en œuvre Traversable .

Cela signifie que mysqli_result doit avoir implémenté les méthodes Iterator current() , key() , next() , rewind() y valid() .

Mais quand je fais ça :

/** @var \mysqli */
$rStmt = $oMySQLi->prepare('<valid query>');
$rStmt->execute();
/** @var \mysqli_result */
$rRes = $rStmt->get_result();
$rRes->rewind();

Je reçois l'erreur :

Appel à une méthode non définie mysqli_result::rewind()

? !

6voto

Pete Points 2668

Mysqli_result implémente les fonctions Iterator, elles ne sont simplement pas exposées à l'utilisateur ( source ). Vous pouvez cependant envelopper mysqli_result dans une balise IteratorIterator .

$it = new \IteratorIterator($result);
$it->current(); // or rewind(), next()

IteratorIterator utilise directement l'implémentation C et n'est donc pas limité par les restrictions d'accès à l'espace utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X