MySQL ve PHP ile kullanımı Tek Sıra Sorgulama

3 Cevap php

Ben bu var demek

$result =  mysql_query('SELECT views FROM post ORDER BY views ASC');

ve ben kullanmak farz indeksi 30 değerini kullanmak istiyorum

mysql_data_seek($result, 30);
$useableResult = mysql_fetch_row($result);
echo $useableResult . '<br/>';

Ama bu benim bütün tablo dönüyor

Ne yanlış var mı?

Edit: Woops, aslında var

mysql_data_seek($result, 30);
while($row = mysql_fetch_row($result)){
    echo $row['views'] . '<br/>';
}

3 Cevap

Sadece bir SQL deyimi kullanın.

$result = mysql_query('SELECT views FROM post WHERE ID=30')

: Eğer ID gitmek yerine iade edileceği 30. öğeyi istediğiniz istemiyorsanız, bir LİMİT min, max kullanabilirsiniz

$result = mysql_query('SELECT views FROM post LIMIT 30, 1')

Her iki durumda da komutlar BY ORDER gereksiz olur.

İşte good usage example of the LIMIT command büyük bir kayıt kümesi üzerinde sayfalama yapmak içindir.

İlk örnek, aslında ne istiyorsun, ama çok pahalı olacaktır. İkinci, tüm tabloyu seçme sonucu 30 satıra hareketli ve daha sonra itibaren tüm sonuçları döngü edilir.

Bunun yerine tek bir satır döndürür ve çok daha hızlı olacak, aşağıdakileri yapmanız gerekir:

$result =  mysql_query('SELECT views FROM post ORDER BY views ASC LIMIT 30,1');

LİMİT Soviut yaptığı açıklama oldukça doğru olmadığını unutmayın - oldukça (min, max) den (, satır sayısını ofset) bulunuyor.

Eğer $ sonucu 30 element vardır emin misiniz? Eğer 30> mysql_num_rows () görmek için kontrol etmek isteyebilirsiniz.