par
lminfo » 12 sept. 2007, 21:10
J'ai trouvé ma solution à l'aide des gens de
PHP.NET. Suivez le lien suivant...
http://ca3.php.net/manual/fr/function.m ... m-rows.php
Le système des requêtes paramétrées (préparées) fonctionne en mode
non bufférisé par défaut. Donc une fonction comme
mysqli_stmt_num_rows() ne retournera pas le bon résultat tant que les données n'auront pas été lues au complet.
Pour pourvoir obtenir le nombre de lignes avant la lecture, il faut appeler la méthode
mysqli_stmt_store_result() qui stockera le résultat en mémoire. Ensuite, on pourra utiliser
mysqli_stmt_num_rows() .
Voici alors la façon de faire...
...
echo '<br />Requête préparée<br />';
$sql = "select * from ch9books";
$rqp = $db->prepare($sql);
$rqp->execute();
$rqp->store_result(); // Récupère tous les résultats
echo 'Rangées = '.$rqp->num_rows.'<br />';
...
On pourra également fonctionner comme ceci en utilisant un compteur interne...
...
echo '<br />Requête préparée<br />';
$sql = "select * from ch9books";
$rqp = $db->prepare($sql);
$rqp->execute();
$rqp->bind_result ($isbn, $auteur, $titre, $prix);
$cpt = 0; // COmpteur interne
echo '<table border="1" cellpadding="5">';
while ($rqp->fetch()) { // Récupère les résultats 1 à 1
$cpt++;
echo '<tr>';
echo '<td>'.»$isbn.'</td>';
echo '<td>'.$auteur.'</td>';
echo '<td>'.$titre.'</td>';
echo '<td>'.$prix.'</td>';
echo '</tr>';
}
echo '</table>';
echo '<br />Rangées = '.$cpt.'<br />';
...
Alors, attention en consultant les livres
PHP sur le sujet (i.e.
PHP 5 Avancé - 2e édition - Daspet & de Geyer, ---, PHP 5 & MySQL 5 - Welling & Thomson ), la plupart ne font pas mention de ce comportement lorsqu'ils abordent la fonction
mysqli_stmt_num_rows().
J'ai trouvé ma solution à l'aide des gens de [b]PHP.NET[/b]. Suivez le lien suivant...
[url]http://ca3.php.net/manual/fr/function.mysqli-stmt-num-rows.php[/url]
Le système des requêtes paramétrées (préparées) fonctionne en mode [b]non bufférisé [/b]par défaut. Donc une fonction comme [b]mysqli_stmt_num_rows() [/b]ne retournera pas le bon résultat tant que les données n'auront pas été lues au complet.
Pour pourvoir obtenir le nombre de lignes avant la lecture, il faut appeler la méthode [b]mysqli_stmt_store_result() [/b]qui stockera le résultat en mémoire. Ensuite, on pourra utiliser [b]mysqli_stmt_num_rows() [/b].
Voici alors la façon de faire...
[php]
...
echo '<br />Requête préparée<br />';
$sql = "select * from ch9books";
$rqp = $db->prepare($sql);
$rqp->execute();
$rqp->store_result(); // Récupère tous les résultats
echo 'Rangées = '.$rqp->num_rows.'<br />';
...
[/php]
On pourra également fonctionner comme ceci en utilisant un compteur interne...
[php]
...
echo '<br />Requête préparée<br />';
$sql = "select * from ch9books";
$rqp = $db->prepare($sql);
$rqp->execute();
$rqp->bind_result ($isbn, $auteur, $titre, $prix);
$cpt = 0; // COmpteur interne
echo '<table border="1" cellpadding="5">';
while ($rqp->fetch()) { // Récupère les résultats 1 à 1
$cpt++;
echo '<tr>';
echo '<td>'.»$isbn.'</td>';
echo '<td>'.$auteur.'</td>';
echo '<td>'.$titre.'</td>';
echo '<td>'.$prix.'</td>';
echo '</tr>';
}
echo '</table>';
echo '<br />Rangées = '.$cpt.'<br />';
...
[/php]
Alors, attention en consultant les livres [b]PHP [/b]sur le sujet (i.e. [i][b]PHP 5 Avancé - 2e édition - Daspet & de Geyer, ---, PHP 5 & MySQL 5 - Welling & Thomson[/b][/i] ), la plupart ne font pas mention de ce comportement lorsqu'ils abordent la fonction [b]mysqli_stmt_num_rows()[/b].