2012-11-26 64 views
1

在我的PHP代码,运行此代码:使用PDO引发的异常“找不到驱动程序”

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(); 
       } 
    } 

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

+0

什么是你的P惠普版?你应该至少有PHP 5.1。 – Simone

+0

我使用w.a.m.p. 5 - > wamp5信息文件显示:PHP version 5.2.1;扩展程序chargées:...,PDO,...。 – pheromix

+0

'$ this-> db_type'的值是什么? – Carlos

回答

1
PDO::getAvailableDrivers() 

使用此功能,你可以找到你需要的驱动,

+0

做出print_r后,显示:Array([0] => sqlite [1] => sqlite2)。那么如何建立连接呢? – pheromix

+0

$ pdo = new PDO('sqlite:/path/to/db/xyz.db'); – som

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环境下,通过替换的.so .dll文件。 仅取消注释您需要的适配器(在上例中:MySQL)。

+0

我取消了注释,但我总是找不到驱动程序! – pheromix

+0

'apache \ bin'文件夹中的'php.ini'文件 – JyoGlance

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 
相关问题