MySQL выбирает первые 5 строк после запроса

#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) ) {}