1

在我的 PHP 代码中,我运行以下代码:

private function dbConnection() {
        if (!is_resource($this->connessione))
            try {
                    $this->connessione = new PDO($this->db_type.":dbname=".$this->db_name.";host=".$this->db_server, $this->db_username, $this->db_pass );
                    //echo "PDO connection object created";
                    $this->setupSQLStatement();
                }
            catch(PDOException $e)
                {
                    echo $e->getMessage();
                    die();
                }
    }

它引发了异常“找不到驱动程序”。什么是驱动程序以及如何使用它?

4

3 回答 3

4

PDO 带有一个核心扩展,以及一些 DBMS(MySQL、PostgreSQL、Oracle、SQLite...)的许多“适配器”。

这些适配器是您需要启用的附加扩展php.ini,如下所示:

extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_ibm.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pdo_sqlite_external.dll
;extension=php_pdo_user.dll

在 UNIX 环境中,将 .dll 替换为 .so。仅取消注释您需要的适配器(在上面的示例中:MySQL)。

于 2012-11-26T09:24:57.507 回答
1

添加以下内容并检查它是否输出“mysql”行。

foreach(PDO::getAvailableDrivers() as $driver)
    echo $driver, '<br>';

如果没有,则打开 php.ini 并找到:

;extension=php_pdo_mysql.dll

删除;, 所以它看起来像这样,然后重试:

extension=php_pdo_mysql.dll

也执行与上述相同的操作:

;extension=php_pdo.dll
于 2012-11-26T09:27:18.057 回答
1
PDO::getAvailableDrivers()

使用它,您可以在服务器中找到可用的驱动程序。

于 2012-11-26T09:24:30.033 回答