我一直在尝试将我的应用程序从使用折旧的mysql语法转换为PDO以连接到数据库并执行查询,到目前为止一直很痛苦。
现在我有一个类db_functions.php,我正在尝试创建一个到数据库的PDO连接,以及执行其中的所有CRUD操作。
以下是代码的示例:
db_functions.php
<?php
class DB_Functions {
private $db;
// constructor
function __construct() {
require_once 'config.php';
// connecting to mysql
try {
$this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD);
}
catch (PDOException $e) {
$output = 'Unable to connect to database server.' .
$e->getMessage();
exit();
}
}
// destructor
function __destruct() {
}
public function getAllUsers() {
try {
$sql = "select * FROM gcm_users";
//$result = mysql_query("select * FROM gcm_users");
$result = $this->$db->query($sql);
return $result;
}
catch (PDOException $e) {
$error = 'Error getting all users: ' . $e->getMessage();
}
}
使用该代码,我收到以下错误:
Notice: Undefined variable: db in C:\xampp\htdocs\gcm\db_functions.php on line 12
Fatal error: Cannot access empty property in C:\xampp\htdocs\gcm\db_functions.php on line 12
第12行是:
$this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD);
我如何解决这个问题,以便我有一个PDO
连接到我的数据库的正确实例,我可以用它来db_functions
中的其他方法创建查询,例如getAllUsers()
我使用How do I create a connection class with dependency injection and interfaces?找到的答案无济于事。
答案 0 :(得分:0)
//$this->$db =
$this->db =
同样在这里
//$this->$db->query($sql);
$this->db->query($sql);
并且我也会使用127.0.0.1
而不是localhost
来提高性能,否则连接将需要很长时间...只需连接几秒......