PHP错误prepare()在非对象上

时间:2013-12-05 11:40:28

标签: php

我在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对象。

1 个答案:

答案 0 :(得分:0)

$ this-&gt; db设置为Connection对象,该对象只有dbConnect()方法。此外,construct()不是一种神奇的方法,在构造时不会自动调用。 __construct()正是您所寻找的。

为什么不创建一个新的PDO对象为$ this-&gt; db?额外的课程是不必要的。