PDO 连接失败
PDO Connection fails
这是我的数据库连接代码,当我不打算将它放在 class 的函数中时,它可以工作,但如果它的内部函数它不知道?
class DBConnection {
private $connection;
function __construct(){
$this->open_connection();
}
public static function open_connection(){
try {
$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
$connection->exec("SET NAMES 'utf8'");
$connection->exec("SET CHARACTER SET utf8");
$connection->exec("SET character_set_server=utf8");
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
} catch (Exception $e) {
die($e->getMesage());
}
}
}// class ends
我认为你的代码中的问题是你使用静态函数 return 连接和你的构造函数没有分配给你的私有变量
使用私有 $connection 的第一个解决方案:
class DBConnection {
private $connection;
function __construct(){
$this->connection = $this->open_connection();
}
public static function open_connection(){
try {
$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
$connection->exec("SET NAMES 'utf8'");
$connection->exec("SET CHARACTER SET utf8");
$connection->exec("SET character_set_server=utf8");
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
} catch (Exception $e) {
die($e->getMesage());
}
}
seconde 静态连接
class DBConnection {
private static $connection = null;
function __construct(){
if (self::$connection == null)
$this->open_connection();
}
public static function open_connection(){
try {
self::$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
self::$connection->exec("SET NAMES 'utf8'");
self::$connection->exec("SET CHARACTER SET utf8");
self::$connection->exec("SET character_set_server=utf8");
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die($e->getMesage());
}
}
希望能帮到你。
这是我的数据库连接代码,当我不打算将它放在 class 的函数中时,它可以工作,但如果它的内部函数它不知道?
class DBConnection {
private $connection;
function __construct(){
$this->open_connection();
}
public static function open_connection(){
try {
$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
$connection->exec("SET NAMES 'utf8'");
$connection->exec("SET CHARACTER SET utf8");
$connection->exec("SET character_set_server=utf8");
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
} catch (Exception $e) {
die($e->getMesage());
}
}
}// class ends
我认为你的代码中的问题是你使用静态函数 return 连接和你的构造函数没有分配给你的私有变量
使用私有 $connection 的第一个解决方案:
class DBConnection {
private $connection;
function __construct(){
$this->connection = $this->open_connection();
}
public static function open_connection(){
try {
$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
$connection->exec("SET NAMES 'utf8'");
$connection->exec("SET CHARACTER SET utf8");
$connection->exec("SET character_set_server=utf8");
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
} catch (Exception $e) {
die($e->getMesage());
}
}
seconde 静态连接
class DBConnection {
private static $connection = null;
function __construct(){
if (self::$connection == null)
$this->open_connection();
}
public static function open_connection(){
try {
self::$connection = new PDO('mysql:host=localhost;dbname=practice','root','');
self::$connection->exec("SET NAMES 'utf8'");
self::$connection->exec("SET CHARACTER SET utf8");
self::$connection->exec("SET character_set_server=utf8");
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die($e->getMesage());
}
}
希望能帮到你。