За последние 24 часа нас посетили 16655 программистов и 1681 робот. Сейчас ищут 839 программистов ...

Вопрос по использованию PEAR

Тема в разделе "Прочие вопросы по PHP", создана пользователем HIMID, 8 сен 2008.

  1. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    Локально на машине установленна связка Apache 2.2+ PHP 5.2.6 +Mysql 5.0.67
    Установил PEAR подключил пакет DB

    пишу скрипт

    <?php
    require_once('PEAR.php');
    require_once('DB.php');
    $dsn = array(
    'phptype' => 'mysql',
    'username' => 'root',
    'password' => '1234',
    'hostspec' => 'localhost',
    'database' => 'insure',
    );

    $options = array(
    'debug' => 2,
    'portability' => DB_PORTABILITY_ALL,
    );
    $db =& DB::connect($dsn, $options);
    if (PEAR::isError($db)) die($db->getMessage());
    ?>
    на строке $db =& DB::connect($dsn, $options); получаю сообщение Non-static method DB::conect

    Возможно неправильно вызываю функцию подскажите как правильно вызвать
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так написано же, что метод не статичен - значит надо сначала создать экземпляр класса, а и пользоваться его методами.
    $db = new DB();
    $db->connect($dsn, $options);
     
  3. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    Да с этим разобрался но получаю сообщения на connect вида is_a():Deprecated. Please use the instanceof operator Поискал вроде это из-за того что включен вывод сообщений в error_reporting пробовал выключить error_reporting(0) не помогает. В чем может быть проблема?
     
  4. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    HIMID
    это не проблема
    это же Notice, а не Error
    это 5ка грит, что is_a - устаревший способ и нужно юзать оператор instanceof для определения типа объекта
    включи совместимость с четвёркой чтоли, если надпись тебя сильно напрягает..
     
  5. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Это не E_NOTICE, а E_STRICT. Просто отключи его.
     
  6. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    После соединения как вызвать Query?

    $db = new DB();
    $db -> connect($dsn, $options);
    $q = 'SELECT InsTypeID , name FROM instype LIMIT 0, 30 ';

    $rez = $db -> query($q); не работает

    нет метода Query в классе DB подскажите как вызвать например Query из DB_common или можно всетаки как-то из класса DB вызывать?
     
  7. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Нет метода, или скрипт просто выкидывает ошибку (ругается, например, на неправильный запрос)?
    Еррор в студию
     
  8. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    Call to undefined method DB:query()

    стоит модуль PEAR DB 1.7.14RC1
     
  9. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
  10. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    Есть класс DB файл DB.php соединился

    require_once('PEAR.php');
    require_once('DB.php');

    $dsn = array(
    'phptype' => 'mysql',
    'username' => 'root',
    'password' => '1234',
    'hostspec' => 'localhost',
    'database' => 'insure',

    $db = new DB();
    $db -> connect($dsn, $options);

    Хочу запустить запрос после соединения используя метод query но класса DB_common (есть в нем данный метод)
    Как вызвать?
     
  11. HIMID

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

    С нами с:
    8 сен 2008
    Сообщения:
    6
    Симпатии:
    0
    подключил файл где объявлен класс DB_common

    require_once('DB/common.php');

    так как я уже установил соединение методом connect и линк в DB_common $db то
    как дальше обратиться к классу DB_common для использования метода query?
    поробовал $rez = $db -> DB_common::query('строка запроса') не работает
    попробовал так

    $qu = new DB_common();
    $rez = $qu -> query('строка запроса'); не прошло и не понимаю как тут понять что я линк уже установил понимаю что наверное в if conect'a проверить проверить прошло ли соединение или как?

    Как при наличии конекта далее вызвать запрос и получить массив