2012-11-26 63 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 
相關問題