За последние 24 часа нас посетили 18022 программиста и 1652 робота. Сейчас ищут 1747 программистов ...

Помогите разобраться. Ошибку вызывает While

Тема в разделе "PHP для новичков", создана пользователем HDMan, 28 ноя 2008.

  1. HDMan

    HDMan Активный пользователь

    С нами с:
    28 ноя 2008
    Сообщения:
    6
    Симпатии:
    0
    Помогите разобраться.
    Ошибку Fatal error: Maximum execution time of 30 seconds exceeded вызывает While
    вот какой у меня код (часть кода)
    Код (Text):
    1.  
    2. $sql = "select запрос";
    3. $query = mysql_query($sql);
    4. $result = mysql_fetch_array($query);
    5. if (mysql_num_rows($query))>0) {
    6.      while(list($c_id, $c_model,$c_price,$c_name)=$result){
    7.           echo "$c_id, $c_model,$c_price,$c_name";
    8.      }
    9. }
    в результате имеем массив $result размером N*4 (N - как правило от 1 до 5)
    который я никак не могу извлечь

    причем если закоментить while то все последующие запросы выполняются без ошибок.

    объясние пожалуйста почему while заклинивает.

    что проверить? что вставить? как исправить?
     
  2. Mae Stro

    Mae Stro Активный пользователь

    С нами с:
    21 ноя 2008
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киров
    разумеется, будет прерывание бесконечного цикла через 30 секунд лимита. Вы ведь и не извлекаете из присланной таблицы ничего.

    mysql_fetch_array($query) - выдаст вам только одну строку из таблицы.

    Шаблонное решение типа так:

    PHP:
    1. $query = "select запрос";
    2. $result = mysql_query($query);
    3.  
    4. while ($line = mysql_fetch_array($result))                   // пока в line выдается очередная строка (не FALSE)
    5. {
    6.    extract($line, EXTR_OVERWRITE);                           // импортируем массив line[] в переменные - можно и list() и просто обращение к ячейкам массива
    7.    echo "$c_id $c_model $c_price $c_name<br />";
    8. }
    mysql_num_rows() имхо же используется, если предпочтительнее юзать цикл for(;; ) или проверить, есть запись в базе или нет.