这是我到目前为止所拥有的:
class DB {
var $DBUser = 'xxx';
var $DBPass = 'xxx';
var $DBServer = 'xxx';
var $DBName = 'xxx';
public function connect() {
try {
$strDSN = "mysql:host=$this->DBServer;dbname=$this->DBName;";
$username = $this->$DBUser;
$pass = $this->$DBPass;
$conn = new PDO($strDSN, $username, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'connected';
}
catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
} //end method
} //end class
然后使用它来调用:
$db = new DB;
$conn = $db->connect;
$stmt = $conn->prepare('SELECT * FROM XXX WHERE id = :id');
$id = $_GET['id'];
$stmt->execute(array('id'=>$id));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
但是,我收到此错误消息:
致命错误:在非对象
上调用成员函数prepare()
任何想法我做错了什么?
答案 0 :(得分:2)
调用方法时,请加上括号:
$conn = $db->connect();
// ^^ missing
第二个问题是你的connect方法没有返回连接句柄。在try
块中添加:
return $conn;
最后,在引用实例和类属性时,请不要包含$
。
$username = $this->DBUser;
// ^ $ should not be present