php pdo 数据库连接 class
php pdo db connection class
<?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 />";
}
?>
无论我给出的数据库详细信息是对还是错,它都只显示已连接的数据库。请让我知道我哪里做错了。
这里有两个可能的问题。
第一个已经提到了,你需要将用户名和密码作为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);
$this->dbh = new PDO("mysql:host=$this->host; db_name =$this->db_name,
$this->db_username, $this->db_password");
语法不正确(你弄乱了最后的 ")
正确的语法是:
$this->dbh = new PDO("mysql:host=$this->host;db_name=$this->db_name",
$this->db_username, $this->db_password);
顺便说一句,你不能回应你的 class,它会 return :
Catchable fatal error: Object of class DB_Handler could not be converted to string in C:...\index.php on line 49
<?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 />";
}
?>
无论我给出的数据库详细信息是对还是错,它都只显示已连接的数据库。请让我知道我哪里做错了。
这里有两个可能的问题。
第一个已经提到了,你需要将用户名和密码作为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);
$this->dbh = new PDO("mysql:host=$this->host; db_name =$this->db_name,
$this->db_username, $this->db_password");
语法不正确(你弄乱了最后的 ")
正确的语法是:
$this->dbh = new PDO("mysql:host=$this->host;db_name=$this->db_name",
$this->db_username, $this->db_password);
顺便说一句,你不能回应你的 class,它会 return :
Catchable fatal error: Object of class DB_Handler could not be converted to string in C:...\index.php on line 49