2011-02-14 5 views
0
$result = mysql_query($query); 
$filter = array(); 
while($r = mysql_fetch_array($result)) 
{ 
    for ($i = 0; $i<20; $i++) 
    { 
     $filter[] = $r["name"][$i]; 
    } 
    $name = implode(",", $filter); 
} 

Ci-dessus est une partie du code principal. Je veux limiter la boucle à ne fonctionner que 20 fois. si au dessus de 20 il faut l'omettre ... mais cela me donne un résultat bizarre ... j'en connais quelques où j'ai fait une erreur mais où?quel est le problème avec cette boucle?

Répondre

1

Vous n'êtes pas avanciez à la ligne suivante

$result = mysql_query($query); 
$filter = array(); 
$i = 0; 
while($r = mysql_fetch_array($result)) 
{ 

    $filter[] = $r["name"][$i]; } 
    $name = implode(",", $filter); 
    if(++$i == 20) 
    { 
     break; 
    } 
} 
3

mysql_fetch_array récupère une seule ligne de données à partir des résultats de la requête. On dirait que vous essayez de chercher seulement un seul champ à partir des résultats, de sorte que vous voudriez quelque chose comme ceci:

$i = 0; 
while($row = $mysql_fetch_assoc($result)) { 
    $i++ 
    if ($i >= 20) { 
     break; 
    } 
    $filter[] = $row['name']; 

} 
$name = implode(",", $filter); 

Mais ce qui est très inefficace. Pourquoi ne pas avoir MySQL faire la limite de la ligne elle-même?

SELECT your,fields,here 
FROM yourtable 
WHERE ... 
ORDER BY ... 
LIMIT 20 

et vous obtenez seulement 20 lignes pour commencer, sans forcer MySQL pour aller chercher tout cependant-many-il-sont-delà-20.

+0

OH..so simple vous avez raison..J'ai oublié l'option LIMIT..bien merci l'homme –