调用成员函数prepare()null

我已经搜索了关于这个的每一个答案,而且似乎没有人完全回答发生了什么。 目前,我在尝试使用pdo准备语句时遇到标题错误。

我努力了:

改为使用构造函数

使用非静态

当我有一个构造函数时使用$ this

捕捉PDO异常,似乎没有人抛出

这里是main.php

class db {
    public static $db;
    public static $db2;

    public static function start() {
        $host = "localhost";
        $dbname = "dbname";
        $usr = "user";
        $ps = "pass";

        $pdo = "mysql:host=$host;dbname=$dbname";
        $opt = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => true
        ];
        try {
        db::$db = new PDO($pdo, $usr, $ps, $opt);

        return db::$db;
        } catch(PDOException $e) {
            $e->getMessage();
        }
    }
}

然后初始化数据库,我使用db::start();在index.php中调用start函数db::start();

现在,到错误。

在main.php中,在一个完全不同的类和函数中,我尝试静态调用此连接。

$stmt0 = db::$db->prepare("SELECT * FROM users WHERE uname=:u");

但完成后,我会在标题中收到此错误。

大多数人可能会认为,嗯,连接必须有错误,然后如果它调用它为空。 如果是这样的话,有些东西会阻止我的异常被抛出,因为我在错误日志或页面上看不到任何东西。


你的PDO没有连接,并且由于你没有做任何具有这种条件的事情(你catch它但是默默地放弃它),它正在陷入困境。

尝试删除try..catch块。 如果连接发生错误,您需要知道!


我在http://phpfiddle.org/上试过这段代码,它工作正常:(打开URL,打开“CodeSpace”并粘贴下面的代码)

<?php

class db {
    public static $db;
    public static function start() {
        $opt = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => true
        ];
        try {
            require "util/public_db_info.php";
            $db = new PDO($dsn, $user_name, $pass_word);
            return $db;
        } catch(PDOException $e) {
            die($e->getMessage());
        }
    }
}

$db = db::start();

$result = $db->prepare("SELECT * FROM books WHERE id <= 10");
$status = $result->execute();

if (($status) && ($result->rowCount() > 0))
{
    $results = array();

    //convert query result into an associative array
    while ($row = $result->fetch(PDO::FETCH_ASSOC))
    {
        $results[] = $row;
    }

    var_dump($results);

}


?>
链接地址: http://www.djcxy.com/p/69173.html

上一篇: Call to a member function prepare() on null

下一篇: 403 Forbidden Checkboxes PDO/PHP Syntax Issue PHPMYADMIN/WAMP