Ошибка подключения к базе данных с помощью PEAR - PullRequest
0 голосов
/ 18 марта 2012

Я хотел бы использовать PEAR для разработки веб-сайта, и я создал класс для подключения и отключения от базы данных, но, похоже, он не работает.Я спрашиваю вас, где я ошибаюсь в отношении кода ниже?

class DB {

    private $mdb2;
    private $connected ;
    private $error;

    public function __construct(){
        $this->mdb2 = $mdb2;
        $this->connected = false;
        $this->error = "";
    }


    public function Connect(){

        require_once('config.php');

        $this->mdb2 = MDB2::connect("mysql://".$db_user.":".$db_pass."@".$db_host."/".$db_name."");
        $this->connected = true;
        if (PEAR::isError($this->mdb2))
        {
            //error handling
            $this->connected = false;
            die("Error connecting to the database!".$this->mdb2->getMessage());
        }
        return $this->connected;
    }

    public function getError(){
        return $this->error;
    }

    public function doquery($query)
    {
        if ($query != "" && $this->connected == true)
        {
            $result = $this->mdb2->query($query);
            if ($result->numRows() > 0 )
            {
                return $result;
            }
            else 
            {
                $this->error = "The Query returned 0 rows";
            }
        }
        else 
        {
            $this->error = "Invalid Query or DB Connection Closed";
        }

    }

    public function Disconnect(){
        if ($this->connected == true)
        {
            $this->connected = false;
            $this->mdb2->disconnect();
        }
        else 
        {
            $this->connected = false;
        }
    }
 }

Запуск этого кода для теста:

 $cdb = new DB();
 $cdb->Connect();
 $data = $cdb->doquery("SELECT test FROM test");
 $aa = 0;
if ($cdb->getError() == ""){
while ( $line = $data->fetchRow())
   $aa = $line[0];
   echo $aa;
}
 else echo $cdb->getError();
 $cdb->Disconnect();
 if ($aa == 3){
 $cdb->Connect();
 $dataa = $cdb->doquery("SELECT test FROM test");

 while ( $linea = $dataa->fetchRow())
   echo $linea[0];

 $cdb->Disconnect();
 }

Выдает мне эту ошибку:

MDB2 Ошибка: ошибка подключения: подключение: [Сообщение об ошибке: доступотказано для пользователя 'test' @ 'localhost' (используя пароль: NO)] [собственный код: 1045] [собственное сообщение: доступ запрещен для пользователя 'test' @ 'localhost' (используя пароль: NO)] ** mysql (mysql): //: xxx @ /

1 Ответ

0 голосов
/ 18 марта 2012

Вы уверены, что ваши учетные данные верны? На самом деле это не говорит о том, что соединение не удалось, просто говорится, что у вас нет доступа.

...