我正在使用PDO连接到数据库。 我的Connect类看起来像这样
class Connect {
private $error;
public static $dbh;
public $db;
public function __construct() {
$host = "127.0.0.1";
$dbName = "myproject";
$dbUser = "root";
$dbPass = "";
try {
$this->db = new PDO("mysql:host={$host};dbname={$dbName}", $dbUser, $dbPass);
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query = $this->db->prepare("SET NAMES UTF8");
$query->execute();
} catch (PDOException $e) {
return $e->getMessage();
}
}
}
$connect = new Connect();
有时当我尝试使用这个类从mysql获取数据时,它可以工作,但有时候不会。
当我试图转储全班时,我得到了这个
对象(连接)#3(2){[“error”:“Connect”:private] => NULL [“db”] =>对象(PDO)#4(0){}}
我无法理解这是什么问题。
答案 0 :(得分:0)
首先从__contsruct
函数中删除变量以避免硬编码。从此类创建新对象时,可以传入数据库信息。
class Connect {
private $error;
public static $dbh;
public $db;
public function __construct($host,$database,$user,$password) {
try {
$this->db = new PDO("mysql:host=$host;dbname=$database", $user, $password);
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query = $this->db->prepare("SET NAMES UTF8");
$query->execute();
} catch (PDOException $e) {
return $e->getMessage();
}
}
}