За последние 24 часа нас посетили 30565 программистов и 1808 роботов. Сейчас ищут 840 программистов ...

Помогите разобраться. Ошибку вызывает 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(;; ) или проверить, есть запись в базе или нет.