【发布时间】:2015-02-17 18:42:53
【问题描述】:
这是我目前所拥有的:
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()
任何想法我做错了什么?
【问题讨论】:
-
1.不要再使用
var2.$conn = $db->connect;是一个函数,所以将其称为一个函数,例如$conn = $db->connect();3. 必须像这样访问类属性:$this->DBUser;$ 标志消失了($this->$DBPass;相同) 4. 你必须返回你的连接,才能分配它像这样:return $conn或return false;如果连接失败 -
另外执行你需要
:id