2015-05-22 104 views
0
<?php 

    class DB_Handler{ 

     private $host; 
     private $db_name; 
     private $db_username; 
     private $db_password; 
     public $dbh; 

     public function __construct($db_host, $db_name, $db_username, $db_password){ 

      $this->host = $db_host; 
      $this->db_name = $db_name; 
      $this->db_username = $db_username; 
      $this->db_password = $db_password; 
     } 

     public function connect(){ 
      try{     
       $this->dbh = new PDO("mysql:host=$this->host; db_name =$this->db_name, $this->db_username, $this->db_password"); 

       $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      } 
      catch(PDOException $e){ 
       $error = "Error: ".$e->getMessage().'<br />'; 
       echo $error; 
       return false; 
      } 
      return true; 
     } 

    } 

    $db_host = "localhost"; 
    $db_name = "db_handler_01"; 
    $db_username = "root"; 
    $db_password = "sd"; 

    $snowboard_db = new DB_Handler($db_host, $db_name, $db_username, $db_password); 

    $result = $snowboard_db->connect(); 



    if($result){ 
     echo "DB Connected <br>"; 
     echo $snowboard_db; 
    } 
    else{ 
     echo "DB is not Connected <br />";  
    } 

?> 

如果我给出数据库的详细信息正确或错误它只显示数据库连接。请让我知道我犯的错误。php pdo db连接类

+1

在我看来,你的连接字符串是错误的。只有主机和数据库名称应该用引号包装。用户名和密码以及PDO构造函数的第二个和第三个参数。 –

+0

$ this-> dbh = new PDO(“mysql:host = {$ this-> host}; db_name = {$ this-> db_name}”,$ this-> db_username,$ this-> db_password); –

+0

非常感谢Ron Dadon和Junaid Ahmed。我试过说,它工作正常。非常感谢你。 – Manoj

回答

0

这里有两个可能的问题。

第一个已经提到过,您需要发送用户名和密码作为PDO构造函数的第二个和第三个参数。由于 - 可能放错地方 - 报价,因此您将第一个参数中的所有内容都发送出去。

第二个问题是您告诉PDO在之后抛出异常您已经(或尝试)建立连接。对于可能迟到的连接错误。

如果你想赶上连接错误,以及,你可以发送一个第四个参数,以PDO构造与所需的选项:

$opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); 
$this->dbh = new PDO("mysql:host={$this->host}; db_name ={$this->db_name}", 
        $this->db_username, $this->db_password, $opt); 
+0

非常感谢Jeroen。我尝试了Ron Dadon说的方式。它工作正常。非常感谢Jeroen。 – Manoj

0
$this->dbh = new PDO("mysql:host=$this->host; db_name =$this->db_name, 
         $this->db_username, $this->db_password"); 

语法不正确(U搞砸与最终“)

正确的语法是:

$this->dbh = new PDO("mysql:host=$this->host;db_name=$this->db_name", 
          $this->db_username, $this->db_password); 

BTW你无法回应你的类,它会返回:

Catchable fatal error: Object of class DB_Handler could not be converted to string in C:...\index.php on line 49

来源: PHP.net : PDO connections