скажем, у меня это
$result = mysql_query('SELECT views FROM post ORDER BY views ASC');
и я хочу использовать значение в индексе 30 Я предположил, что буду использовать
mysql_data_seek($result, 30); $useableResult = mysql_fetch_row($result); echo $useableResult . '<br/>';
Но это возвращает всю мою таблицу
Что у меня получилось?
Edit: Woops, у меня есть
mysql_data_seek($result, 30); while($row = mysql_fetch_row($result)){ echo $row['views'] . '<br/>'; }
Просто используйте предложение SQL WHERE.
$result = mysql_query('SELECT views FROM post WHERE ID=30')
Если вы не хотите идти по ID, но вместо этого хотите получить 30-й элемент, который будет возвращен, вы можете использовать LIMIT min, max:
$result = mysql_query('SELECT views FROM post LIMIT 30, 1')
В обоих случаях команды ORDER BY становятся ненужными.
Вот хороший пример использования команды LIMIT для выполнения подкачки на больших наборах записей.
Ваш первый пример действительно сделает то, что вы хотите, но будет очень дорогим. Второй – выбор всей таблицы, переход к 30-й строке результата и последующий цикл всех результатов с этого момента.
Вместо этого вы должны сделать следующее, которое будет возвращать только одну строку и быть намного быстрее:
$result = mysql_query('SELECT views FROM post ORDER BY views ASC LIMIT 30,1');
Обратите внимание, что объяснение LIMIT от Soviut не совсем корректно – это (смещение, количество строк), а не (min, max).
Вы уверены, что в $ result есть 30 элементов? Вы можете проверить, есть ли 30> mysql_num_rows ().