2010-09-14 4 views
0

J'apprécierais de l'aide à ce sujet, j'ai un ensemble de résultats que j'essaye de travailler avec. Le résultat contient 2 champs et n'importe quel nombre de lignes.Comment puis-je savoir si je suis à la dernière rangée d'un ensemble de données?

En appelant fetch_row(), comment pouvez-vous dire si la méthode a atteint la dernière ligne?

J'itérer à travers les lignes à l'aide:

while(list($className, $classID) = $result->fetch_row()) { 

    echo "<tr><td>$className has ID $classID.</td></tr>" 

// Here, if the loop is for the last time I need to allow some extra code to run 
// echo "<tr><td>Last Item.</td></tr>" 

} 

Je pensais avoir un compteur incrémental dans la boucle while qui compare la ligne à num_rows mais on pense qu'il doit y avoir un Slicker était de dire si vous avez atteint la dernière rangée

Tout conseil très apprécié. Merci beaucoup ShaunMc

+0

pourquoi ne pas simplement ajouter ce code après la boucle? –

+0

Pourquoi allez-vous chercher autant de données? Si vous voulez seulement la dernière rangée, le SQL devrait être adapté pour renvoyer cela ... à moins que je manque quelque chose. –

Répondre

2

Je pensais avoir un compteur incrémental dans la boucle while qui compare la ligne à num_rows mais on pense qu'il doit y avoir un Slicker était de dire si vous avez atteint la dernière ligne

Non, je pense que c'est en fait la seule façon de le faire, quelle que soit wrapper DB que vous utilisez (je suppose que c'est AOP.)

il est vraiment dommage: PHP doit avoir quelque chose comme ça construit dans, au moins en foreach con structs. Mais ce n'est pas le cas.

+0

Son plus similaire Mysqli, PDO utilise des noms de méthodes CamelCase. – prodigitalson

+0

@Col Je ne veux pas dire 'fetch_row' pour retourner cela, mais ce serait bien si' foreach' avait un indicateur 'first_row' /' last_row' intégré. –

0

fetch_row() renvoie la valeur null lorsqu'elle atteint la fin du jeu de résultats.

http://php.net/manual/en/mysqli-result.fetch-row.php

Ou me manque quelque chose que je.

+0

Il veut probablement faire quelque chose conditionnellement dans la structure de la boucle quand il s'occupe du dernier résultat, pas après ... s'il appelle fetch_row à l'intérieur et ce n'est pas le dernier résultat alors il a déplacé le résultat en faisant une itération dans la boucle pour ce résultat. il pourrait toujours chercher en arrière mais cela exigerait encore de savoir quel indice de résultat il est. – prodigitalson

+1

Ah, ha! Je l'ai fait dans le passé de 1. obtenir la première rangée 2. obtenir la deuxième rangée 3. est le deuxième résultat Null (Oui faire le traitement) pas de première rangée = deuxième rangée et obtenir la prochaine rangée (à la deuxième) etc. – Jaydee

Questions connexes