#php #mysql
#php #mysql
Вопрос:
У меня есть результат mysql (содержащий много строк), который я буду использовать позже. На данный момент мне нужно получить доступ (суммировать) только к первым 5 строкам. Проблема в том, что строки были сохранены из запроса с использованием «AS», поэтому теперь к ним можно получить доступ с помощью $row['name']
. Как я могу выбрать первые 5 строк, не используя «имя» для каждой из них?
Есть ли какой-либо способ сделать это следующим образом:
PHP:
for($i=0;$i<5; $i)
echo $row[$i];
?
Редактировать
Извините, мой вопрос был неправильным. На самом деле: как я могу использовать один и тот же $ result 2 раза без потери значений при извлечении массива?
Комментарии:
1. что не так с
for($i=0;$i<5; $i)
утверждением?2. вы можете использовать LIMIT в запросе mysql, чтобы получить только 5 строк вместо получения всех строк и использования только 5 из них.
3. @hydra, извините, посмотрите мою правку @harry, потому что позже мне понадобятся все значения
Ответ №1:
Что вы используете для работы с БД? PDO? MySQLi? Расширение MySQL?
Если вы используете расширение MySQL ( mysql_connect()
, mysql_query()
и т.д.), вы можете использовать mysql_data_seek()
для перемещения указателя внутренней строки результата 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);
Другим вариантом было бы извлечь все результаты в массив и затем работать с этим массивом. Я не могу придумать никакой пользы от того, чтобы держать ресурс MySQL открытым.
Ответ №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'];
}
используйте $result столько раз, сколько захотите
Ответ №3:
вы можете использовать запрос mysql как
выберите * из table_name_ravi limit 0,5
просто используйте это
Ответ №4:
Я думаю, вы что-то путаете. $row['name']
обращается к столбцу строки с именем name, поэтому вам следует поработать над вашей функцией выборки вашего while( $row = mysql_fetch_assoc($result) ) {}