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
Форумы портала PHP.SU :: Версия для печати :: PEAR::DB
Форумы портала PHP.SU » PHP » PEAR и PECL » PEAR::DB

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

1. noname - 27 Июня, 2009 - 17:50:22 - перейти к сообщению
Приветствую!

Помогите разобраться с проблемой. Скачал пакеты PEAR, великолепное творение могу скзаать, а вот PEAR:: DB никак не хочет работать! Вот так пробую его:

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. require_once 'DB/DB.php';
  4.  
  5. $db =& DB::connect('mysql://user:pwd@localhost/test');
  6.  
  7. $res =& $db->query('select * from users');
  8.  
  9. while ($res->fetchInto($row)) {
  10.       echo $row[0] . "\n";
  11. }
  12.  
  13. ?>


В результате ничего!.

Когда пытаюсь просмотреть в чем же ошибка с помощью PEAR::isError(), то все идет нормально никаких ошибок нет!

В чем же может быть проблема?

(Сервер БД боевой, ОС – win, apache2.2, PHP5, MySQL5)

Заранее благодарен!
2. valenok - 27 Июня, 2009 - 18:58:19 - перейти к сообщению
DB::isError , а не PEAR:isError

$db = DB::connect($dsn,true);

if (DB::isError($db)) {
echo "Could not connect!";
die ( $db->getMessage() );
}
3. noname - 27 Июня, 2009 - 19:06:51 - перейти к сообщению
valenok пишет:
DB::isError , а не PEAR:isError

$db = DB::connect($dsn,true);

if (DB::isError($db)) {
echo "Could not connect!";
die ( $db->getMessage() );
}


Strict Standards: var: Deprecated. Please use the public/private/protected modifiers in C:\PHP\PEAR\DB\DB.php on line

Вот такое если error_reporting (E_ALL | E_STRICT);
4. valenok - 27 Июня, 2009 - 19:47:52 - перейти к сообщению
Нас эта ошибка не касается.
Если подключение к бд получается - проверяй на ошибки после выполнения запроса.
5. noname - 27 Июня, 2009 - 20:08:40 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //error_reporting (E_ALL | E_STRICT);
  3. require_once 'DB/DB.php';
  4.  
  5. echo '111111111111111111111111111';
  6.  
  7. $dsn = "mysql://root:knox@localhost/test";
  8. $db = DB::connect($dsn,true);
  9.  
  10. //После DB::connect нет компиляции! Следующая строка не отобразиться на странице
  11. echo '2222222222222222222222222222';
  12.  
  13. if (DB::isError($db)) {
  14. echo "Could not connect!";
  15. die ( $db->getMessage() );
  16. }
  17.                 /* else {
  18.                         print 'error';
  19.                 }
  20.                 */
  21.  
  22. $res =& $db->query("select * from users");
  23.  
  24. while ($res->fetchInto($row)) {
  25.       echo $row[0] . "\n";
  26. }
  27.  
  28. ?>
6. valenok - 27 Июня, 2009 - 20:10:56 - перейти к сообщению
DB.php переложи на папку выше.
Вместо /PEAR/DB/DB.php будет /PEAR/DB.php
7. noname - 27 Июня, 2009 - 20:52:18 - перейти к сообщению
valenok пишет:
DB.php переложи на папку выше.
Вместо /PEAR/DB/DB.php будет /PEAR/DB.php



CODE (text):
скопировать код в буфер обмена
  1. Could not connect!DB Error: not found



Вообще не понятно что это! Уже и права к папке смотрел, ничего не помогает
8. valenok - 27 Июня, 2009 - 21:44:24 - перейти к сообщению
2222 выводит ?
Замечательно. Теперь давай разбираться с подключением.

В принципе эта ошибка значит что PEAR DB не смог найти определенные файлы (DB/mysql.php к примеру) или проблема с правами на файлы.


Если вернуть DB.php обратно в папку DB
и добавь в php.ini к директиве include_path пути к папкам PEAR и PEAR/DB

Только сначала давай попробуем так:
PHP:
скопировать код в буфер обмена
  1. require_once 'DB.php';
  2.  
  3. echo '111111111111111111111111111';
  4.  
  5. $dsn = "mysql://root:knox@localhost/test";
  6. $db = DB::connect($dsn,array( 'debug'  => 2));
  7.  
  8. if (DB::isError($db)) {
  9.  
  10.     echo 'Standard Message: ' . $db->getMessage() . "\n";
  11.     echo 'Standard Code: ' . $db->getCode() . "\n";
  12.     echo 'DBMS/User Message: ' . $db->getUserInfo() . "\n";
  13.     echo 'DBMS/Debug Message: ' . $db->getDebugInfo() . "\n";
  14.  
  15. }
  16.  
  17. echo '2';
  18.  
9. noname - 27 Июня, 2009 - 22:12:28 - перейти к сообщению
Вот теперь все работает. Действительно стоило только добавить в include_path еще адрес для поиска.
Спасибо!

 

Powered by ExBB FM 1.0 RC1