【问题标题】:Cannot instantiate a PDO object in PHP MVC framework无法在 PHP MVC 框架中实例化 PDO 对象
【发布时间】:2009-11-08 22:55:57
【问题描述】:

谁能帮我解决这个问题?

我在单例类中有这个功能。它给我的错误是它找不到类。

首先我认为它与自动加载器有关,但我做了 spl_autoload_unregister('libloader') 仍然给出同样的错误?

主机正在运行 php 5。

public static function getInstantie()
    {
        if (!self::$instantie)
        {
            $config = config::getInstantie();
            $db_type = $config->config_waarden['database']['db_type'];
            $hostnaam = $config->config_waarden['database']['db_hostnaam'];
            $dbnaam = $config->config_waarden['database']['db_naam'];
            $db_wachtwoord = $config->config_waarden['database']['db_wachtwoord'];
            $db_gebruikersnaam = $config->config_waarden['database']['db_gebruikersnaam'];
            $db_poort = $config->config_waarden['database']['db_poort'];

        self::$instantie = new PDO("$db_type:host=$hostnaam;port=$db_poort;dbname=$dbnaam",$db_gebruikersnaam, $db_wachtwoord);
            self::$instantie-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        return self::$instantie;
    }

谢谢,理查德

【问题讨论】:

    标签: php model-view-controller pdo


    【解决方案1】:

    使用一组数据库驱动程序默认启用 PDO:

    http://au.php.net/manual/en/pdo.installation.php

    但是您正在使用的 PHP 版本可能会禁用它。自动加载不会影响是否会找到 PDO 类。

    创建一个 PHP 信息文件并检查 PDO 部分是否存在。如果没有,那么您的问题很可能是因为它没有内置到您的 php 安装中。

    【讨论】:

    • 谢谢,我想检查一下,但我认为情况并非如此。因为它是标准安装的一部分。原来digitalibiz没有安装它。您可能知道他们不安装它的考虑因素吗?
    • 他们绝对没有理由不这样做。但是,您可能想询问他们的推理。如果他们没有充分的理由,我不会信任他们安装我的 PHP ;)。
    • 我已经提交了一张票,并告诉他们我想将我的域移动到具有 apache 服务器的其他主机。我已经对他们没有安装 isapirewrite 感到沮丧。至少,我不会遇到这些具体问题。
    【解决方案2】:

    该函数是否在扩展 PDO 的类中?如果没有,您能否尝试在扩展 PDO 的类中创建该函数,而不是 self 使用关键字 parent 调用函数?

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 2012-06-11
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2013-03-03
      • 2013-05-17
      相关资源
      最近更新 更多