请帮帮我,我是新人。在非对象上调用成员函数prepare()

时间:2015-02-20 04:01:39

标签: php mysql pdo

我是PHP和PDO的新手,我正在按照教程试图学习,我怎么会收到以下错误。如果有人可以帮助我或给我一些提示,我们将不胜感激。

致命错误:在第41行的dbConnect.php中调用非对象的成员函数prepare()。

这是dbConnect.php:

<?PHP

class Database{

        private $host      = DB_HOST;
        private $user      = DB_USER;
        private $pass      = DB_PASS;
        private $dbname    = DB_NAME;

    private $dbh;
        private $error;
        private $stmt;

        public function __construct(){

            // Set DSN
            $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;

            // Set options
            $options = array(
                    PDO::ATTR_PERSISTENT    => true,
                    PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
            );

            // Create a new PDO instanace
            try{
                    $this->dbh = new PDO('$dsn, $this->user, $this->pass, $options');

            }

            // Catch any errors
            catch(PDOException $e){
                    $this->error = $e->getMessage();
            }


        }

        public function query($query){

            $this->stmt = $this->dbh->prepare($query);

    }

        public function bind($param, $value, $type = null){

        if (is_null($type)) {

            switch (true) {
                case is_int($value):
                        $type = PDO::PARAM_INT;
                        break;
                    case is_bool($value):
                        $type = PDO::PARAM_BOOL;
                        break;
                    case is_null($value):
                        $type = PDO::PARAM_NULL;
                        break;
                    default:
                        $type = PDO::PARAM_STR;

            }

        $this->stmt->bindValue($param, $value, $type);

        }

    }

    public function execute(){

            return $this->stmt->execute();

    }

    public function resultset(){

            $this->execute();
            return $this->stmt->fetchAll(PDO::FETCH_ASSOC);

    }

    public function single(){

            $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

    public function rowCount(){

            return $this->stmt->rowCount();

    }


    // Return last inserted id as string
    public function lastInsertId(){

            return $this->dbh->lastInsertId();

    }

    // Transactions (begin, end, cancel)
    public function beginTransaction(){

            return $this->dbh->beginTransaction();

    }

    public function endTransaction(){

        return $this->dbh->commit();

    }

    public function cancelTransaction(){

            return $this->dbh->rollBack();

    }


    // Get debug dump
    public function debugDumpParams(){

            return $this->stmt->debugDumpParams();

    }               

} 

&GT;

这是config.php,我在其中定义了DB_HOST,DB_USER,DB_PASS和DB_NAME。

<?PHP

// Define configuration
define('DB_HOST', 'localhost');
define('DB_USER', 'someuser');
define('DB_PASS', 'someoassword');
define('DB_NAME', 'somedb');

// File includes
include('dbConnect.php');

&GT;

这是查询,在register.php(抱歉,我之前忘了)

<?PHP

// Include files
include('core/config.php');

$database = new Database();

$database->query('INSERT INTO users (FName, LName, Age, Gender) VALUES (:fname, :lname, :age, :gender)');

$database->bind(':fname', 'Kane');
$database->bind(':lname', 'Steuer');
$database->bind(':age', '20');
$database->bind(':gender', 'male');

$database->execute();

echo $database->lastInsertId();

echo $database->debugDumpParams();

&GT;

0 个答案:

没有答案