php - 对 null 调用成员函数prepare() - PDO

标签 php mysql pdo

我搜索了与此相关的每一个答案,但似乎没有一个答案能够完全回答正在发生的事情。 目前,我在尝试使用 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 函数;

现在,我们来看看错误。

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

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

但是完成后,我在这一行的标题中收到错误。

大多数人可能会认为,嗯,如果连接调用为空,那么连接一定有错误。如果是这种情况,则说明某些东西阻止了抛出异常,因为我在错误日志或页面上看不到任何内容。

最佳答案

您的 PDO 无法连接,并且由于您没有在这种情况下执行任何操作(您捕获它,但随后默默地丢弃它),因此它不会被察觉。

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

关于php - 对 null 调用成员函数prepare() - PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38897657/

相关文章:

php - 在 PHP 中从多维数组构建路径

PHP 警告 : 'vcruntime140.dll' 14. 0 与第 0 行未知中与 14.10 链接的此 PHP 版本不兼容

php - 调用事件的 wp_posts 行

php - Javascript 和 PHP 上传系统

php - PDO 查询字符串

php - 总是使用 MySQL 的项目应该使用 PDO 吗?

PHP mysql PDO 扩展类错误

php - 完全理解 PDO ATTR_PERSISTENT

php - 如何在 PHP 中获取当前日期/时间作为日期对象

php - 为什么这个 PDO 语句会默默地失败?