Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PEAR MDB2

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PEAR MDB2
lykich
Отправлено: 26 Июля, 2010 - 16:36:56
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Помогите понять, не могу понять как тут все движется.
PEAR MDB2
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. require_once 'MDB2.php';
  3. require_once 'function_all/conect_d.php';
  4.  
  5. // Proceed with a query...
  6. $res =& $mdb2->query('SELECT model,id FROM nokia WHERE id=2');
  7. while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) {
  8.    // $foto = $row['foto'];
  9.     echo "<img src=gif1.php><br>";
  10.     echo $row['model'] . "\n";
  11.          echo $row['id'] . "\n";
  12. }
  13. $res->free();
  14.  

Работает но я не могу понять как отрабатывает fetchRow
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function &fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
  3.  
  4. #
  5.    {
  6.  
  7. #
  8.        $err =& $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
  9.  
  10. #
  11.            'method not implemented', __FUNCTION__);
  12.  
  13. #
  14.         return $err;
  15.  
  16. #
  17.     }
  18.  
  19.  

строка 3539 MDB2.php
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. var $query;
  3.  
  4. var $rownum = -1;
  5.  
  6. define('MDB2_FETCHMODE_DEFAULT', 0);
  7.  
  8. var $fetchmode = MDB2_FETCHMODE_ORDERED;
  9.  
 
 Top
lykich
Отправлено: 29 Июля, 2010 - 11:52:36
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Вопрос снят,добрые люди открыли глаза. Упустил я при анализе следующую функции
factory которая после анализа как раз и определяет какой задействовать драйвер.
Вощим в моем случае fetchRow будет выглядеть так

#
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function &fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
  3.  
  4.    {
  5.  
  6.        if (!is_null($rownum)) {
  7.  
  8.            $seek = $this->seek($rownum);
  9.  
  10.             if (PEAR::isError($seek)) {
  11.  
  12.                 return $seek;
  13.  
  14.             }
  15.  
  16.         }
  17.  
  18.         if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
  19.  
  20.             $fetchmode = $this->db->fetchmode;
  21.  
  22.         }
  23.  
  24.         if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
  25.  
  26.            $row = @mysql_fetch_assoc($this->result);
  27.  
  28.             if (is_array($row)
  29.  
  30.                 && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
  31.  
  32.            ) {
  33.  
  34.                $row = array_change_key_case($row, $this->db->options['field_case']);
  35.  
  36.             }
  37.  
  38.         } else {
  39.  
  40.            $row = @mysql_fetch_row($this->result);
  41.  
  42.         }
  43.  
  44.         if (!$row) {
  45.  
  46.             if ($this->result === false) {
  47.  
  48.                 $err =& $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
  49.  
  50.                    'resultset has already been freed', __FUNCTION__);
  51.  
  52.                 return $err;
  53.  
  54.             }
  55.  
  56.             $null = null;
  57.  
  58.             return $null;
  59.  
  60.         }
  61.  
  62.         $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
  63.  
  64.         $rtrim = false;
  65.  
  66.         if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
  67.  
  68.            if (empty($this->types)) {
  69.  
  70.                $mode += MDB2_PORTABILITY_RTRIM;
  71.  
  72.             } else {
  73.  
  74.                 $rtrim = true;
  75.  
  76.             }
  77.  
  78.         }
  79.  
  80.         if ($mode) {
  81.  
  82.             $this->db->_fixResultArrayValues($row, $mode);
  83.  
  84.         }
  85.  
  86.         if (!empty($this->types)) {
  87.  
  88.             $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
  89.  
  90.         }
  91.  
  92.         if (!empty($this->values)) {
  93.  
  94.             $this->_assignBindColumns($row);
  95.  
  96.         }
  97.  
  98.         if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
  99.  
  100.             $object_class = $this->db->options['fetch_class'];
  101.  
  102.             if ($object_class == 'stdClass') {
  103.  
  104.                 $row = (object) $row;
  105.             } else {
  106.  
  107.                 $row = &new $object_class($row);
  108.  
  109.  
  110.             }
  111.  
  112.         }
  113.  
  114.         ++$this->rownum;
  115.  
  116.         return $row;
  117.  
  118.     }
  119.  
  120.  
 
 Top
JustUserR
Отправлено: 30 Июля, 2010 - 15:58:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




lykich пишет:
Которая после анализа как раз и определяет какой задействовать драйвер
Можно было бы еще добавить проверку существования используемой функции в заданном пространстве имен - ведь расширение для соответствующего драйвера могло и не загрузиться и в таком случае можно обработать потенциальную ошибку


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« PEAR и PECL »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB