2011-05-13 4 views
2

J'ai un résultat mysql (ayant plusieurs lignes) que j'utiliserai plus tard. Pour l'instant, j'ai seulement besoin d'accéder (somme) aux 5 premières lignes. Le problème est que les lignes ont été enregistrées à partir de la requête en utilisant "AS", alors maintenant, ils peuvent être consultés en utilisant $row['name']. Comment puis-je sélectionner les 5 premières lignes sans utiliser le "nom" pour chacune d'entre elles?MySQL sélectionner les 5 premières lignes après la requête

Est-il possible de le faire comme ceci:

PHP:

for($i=0;$i<5;++$i) 
    echo $row[$i]; 

?

EDIT
Désolé, ma question était erronée. En fait: Comment puis-je utiliser le même résultat $ 2 fois sans perdre les valeurs en récupérant le tableau?

+1

Qu'est-ce qui ne va pas avec l'instruction 'for ($ i = 0; $ i <5; ++ $ i)'? – ksindi

+0

vous pouvez utiliser LIMIT dans la requête mysql pour obtenir seulement 5 lignes au lieu d'obtenir toutes les lignes et en utilisant seulement 5 d'entre eux. –

+0

@hydra, désolé, voir mon edit @harry Parce que plus tard j'ai besoin de toutes les valeurs – Cristy

Répondre

3

Qu'est-ce que vous utilisez pour travailler avec DB? PDO? MySQLi? Extension MySQL?

Si vous utilisez l'extension MySQL (mysql_connect(), mysql_query() etc), vous pouvez utiliser mysql_data_seek() pour déplacer le pointeur interne du résultat MySQL:

$res = mysql_query($sql); 
if (mysql_num_rows($res)) { 
    // process first 5 lines 
    for ($n = 0; $n < 5; ++$n) { 
     $row = mysql_fetch_assoc($res); 
     if ($row === false) { 
      break; 
     } 
     // do something with $row 
     // ... 
    } 
    // reset pointer 
    mysql_data_seek($res, 0); 
    // process all rows 
    while ($row = mysql_fetch_assoc($res)) { 
     // do something with $row 
     // ... 
    } 
} 
mysql_free_result($res); 

Une autre option serait de chercher tous les résultats en un tableau et ensuite travailler avec ce tableau. Je ne peux pas penser à tout avantage de tenir la ressource MySQL ouverte.

2
$result = array(); 
while($row = mysql_fetch_array($queryResult)) { 
    $result[$row['primaryKey']] = $row; // index the $result according to any fieldValue(say primay key) so that you can access a single records without looping) 
    echo $row['name']; 
} 

utilisation $ result autant de fois que vous le souhaitez

1

vous pouvez utiliser la requête MySQL comme

select * from table_name_ravi limiter 0,5

il suffit d'utiliser cette

0

I pense que tu mêles des choses. $row['name'] accède à la colonne d'une ligne avec le nom nom sou vous devez travailler sur votre fonctionner votre exploration while($row = mysql_fetch_assoc($result)) {}

Questions connexes