我在PHP中遇到此错误:
致命错误:在第21行的C:\ xampp \ xampp \ htdocs \ BookStore \ user.php中的非对象上调用成员函数prepare()
这是我连接到我的数据库的连接类:
<?php
class Connection
{
public function dbConnect()
{
return new PDO("mysql:host=localhost; dbname=msm41","root","");
}
}
?>
这是我的用户类,我尝试检查登录内容:
<?php
include_once('connection.php');
class User
{
private $db;
public function construct()
{//just like c# creating an object of the connection class
//and calling the connection function.connection is return by calling
//dbConnect.
$this->db=new connection();
$this->db=$this->db->dbConnect();
}
//------------------------------login-------------------------------------------
public function Login($id,$pass)
{
if(!empty($id)&&!empty($pass))
{
//parameter query
$st=$this->db->prepare("select * from customers where C_ID=? and C_PWD=?");
$st->bindParam(1,$id);
$st->bindParam(2,$pass);
$st->execute();
if($st->rowCount()==1)
{
echo"acces granted";
}
else
{
echo"incorect username or password";
}
}
else
{
echo"please enter your id and a password";
}
}
//----------------------------login----------------------------------------------
}
?>
我一直在搜索,发现很多人都有同样的错误。我的理解是,我的PDO可能不可见,但我不认为是这样,因为我正在返回并保存该PDO对象。
答案 0 :(得分:0)
$ this-&gt; db设置为Connection
对象,该对象只有dbConnect()
方法。此外,construct()
不是一种神奇的方法,在构造时不会自动调用。 __construct()
正是您所寻找的。 p>
为什么不创建一个新的PDO对象为$ this-&gt; db?额外的课程是不必要的。