2010-05-16 7 views

Répondre

2

Vous pouvez utiliser la fonction mysql_data_seek:

$result = mysql_query($query); 
$row_num = mysql_num_rows($result); 
if (mysql_data_seek($result, $row_num - 1)) { 
    $row = mysql_fetch_assoc($result);  
    ... 
} 
mysql_free_result($result); 
4

Que diriez-vous de ORDER -s les résultats dans l'ordre inverse et obtenir le premier élément? Ça marchera ? (Si vous ne souhaitez que cette ligne, vous pouvez également utiliser LIMIT 1)

+0

En fait, je besoin de sélectionnez (par exemple) la 20ème ligne, mais s'il y a moins de 20 lignes sélectionnées, j'ai besoin de la dernière ligne de la sélection. Maintenant j'utilise LIMIT pour sélectionner 20 lignes et ensuite sélectionner la dernière ligne en itérant via mysql_fetch_array. Et je voudrais éviter d'itération – sergtk

+0

Alors triez-le dans l'ordre inverse, LIMIT 20, et obtenez la première rangée. – nc3b

+0

Dans le cas de nombreux enregistrements sélectionnés cela retournera le 20ème enregistrement à la fin, mais j'ai besoin de 20ème depuis le début – sergtk

0

Ou, plus simplement ceci:

$count=mysql_num_rows(mysql_query("SELECT * FROM whatever")); 
$query="SELECT * FROM whatever LIMIT ".($count-1).", 1"; 
print_r(mysql_fetch_array(mysql_query($query))); 
Questions connexes