За последние 24 часа нас посетили 58594 программиста и 1813 роботов. Сейчас ищут 855 программистов ...

Проблемма с Обьектом

Тема в разделе "Прочие вопросы по PHP", создана пользователем DioNiR, 17 ноя 2007.

  1. DioNiR

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

    С нами с:
    24 мар 2007
    Сообщения:
    6
    Симпатии:
    0
    Проблема такова если передавать то что выдал запрос мускула функции mysql_query в обьект то по ошибочном запоросе работае продолжается. Если же передать в обыную переменную то выведет ошибку.

    Сам метод:
    PHP:
    1.  
    2. function sql_query($query,$id,$file = 'nofile') {
    3.     if ($this->connect_id) {
    4.         $this->query = $query;
    5.         $this->query_id = mysql_query($query, $id) or die(mysql_errno().': '.mysql_error());
    6.         $this->query_count++;
    7.         if ( $this->query_id ) return $this->query_id;
    8.     }
    9.     return false;
    10. }
    11.  
    В ходе тестирования я узнал что если в обьект $this->query_id с в этом методе функционирует то or die не срабатывает при любом запросе мускула.
    Если же написать так:

    PHP:
    1.  
    2. function sql_query($query,$id,$file = 'nofile') {
    3.     if ($this->connect_id) {
    4.         $this->query = $query;
    5.         $result = mysql_query($query, $id) or die(mysql_errno().': '.mysql_error());
    6.         $this->query_count++;
    7.         if ($result ) return $result;
    8.     }
    9.     return false;
    10. }
    11.  
    То если запрос ошибочный то выведет ошибку как пологается.

    Собственно почему так?
     
  2. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    DioNiR
    Воспроизвести вашу ситуацию у себя мне не удалось. :)
     
  3. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Это означает именно то, что ваш класс $db при ошибке в запросе продолжает работу.
     
  4. DioNiR

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

    С нами с:
    24 мар 2007
    Сообщения:
    6
    Симпатии:
    0
    Собственно весь класс.
    PHP:
    1.  
    2.     class database_class {
    3.         var $connect_id;
    4.         var $query_id;
    5.         var $query_count = 0;
    6.         var $query;
    7.  
    8.         function database($server, $user, $passw, $db_name) {
    9.             if (!empty($db_name)) {
    10.                 $this->connect_id = mysql_connect($server, $user, $passw,true);
    11.                 if ($this->connect_id)
    12.                 {
    13.                     if (mysql_select_db($db_name, $this->connect_id))
    14.                     {
    15.                         return $this->connect_id;
    16.                     }
    17.                 }
    18.             }
    19.             return false;
    20.         }
    21.        
    22.         //Завершение соединения с БД
    23.         function sql_close() {
    24.             if($this->connect_id) {
    25.                 if($this->query_id) mysql_free_result($this->query_id);
    26.                 if (@mysql_close($this->connect_id)) return true;
    27.             }
    28.             return false;
    29.         }
    30.        
    31.         function sql_query($query,$id,$file = 'nofile') {
    32.             if ($this->connect_id) {
    33.                 $this->query = $query;
    34.                 $this->query_id = mysql_query($query, $id) or die(mysql_errno().': '.mysql_error());
    35.                 $this->query_count++;
    36.                 if ($this->query_id) return $this->query_id;
    37.             }
    38.             return false;
    39.         }
    40.        
    41.         //Выбор данных
    42.         function sql_fetchrow($query_id = 0) {
    43.             if ($query_id == 0) $query_id = $this->query_id;
    44.             if ($query_id) {
    45.                 $row = mysql_fetch_array($query_id);
    46.                 if ($row) return $row;
    47.             }
    48.             return false;
    49.         }
    50.  
    51.         //Число результатов
    52.         function sql_numrows($query_id = 0) {
    53.             if ($query_id == 0) $query_id = $this->query_id;
    54.             if ($query_id) {
    55.                 $num_rows = mysql_num_rows($query_id);
    56.                 return intval($num_rows);
    57.             }
    58.             return false;
    59.         }
    60.     }
    61.