以前我们连接数据都是使用mysql方式连接,今天突然有一个项目需要使用到PDO对象,结果连接时could not find driver错误提示出来了,下面来我的解决办法.
数据库的连接,我们通过下面的例子来分析PDO连接数据库,代码如下:
- <?php
- $dbms='mysql';//数据库类型Oracle用ODI,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了
- $host='localhost';//数据库主机名
- $dbName='test';//使用的数据库
- $user='root';//数据库连接用户名
- $pass='';//对应的密码
- $dsn="$dbms:host=$host;dbname=$dbName";
- //
- try{
- $dbh=newPDO($dsn,$user,$pass);//初始化一个PDO对象,就是创建了数据库连接对象$dbh
- echo"连接成功<br/>";
- /*你还可以进行一次搜索操作
- foreach($dbh->query('SELECT*fromFOO')as$row){
- print_r($row);//你可以用echo($GLOBAL);来看到这些值
- }//phpfensi.com
- */
- $dbh=null;
- }catch(PDOException$e){
- die("Error!:".$e->getMessage()."<br/>");
- }
- //默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT=>true)变成这样:
- $db=newPDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENT=>true));
- ?>
结果出现了 could not find driver错误提示,后来搜索的原因是没有打开php_pdo_mysql.dll模板导致了,知道原因了解决办法就简单了.
Windows下载修改php.ini,代码如下:
- extension=php_pdo.dll
- extension=php_pdo_mysql.dll
- extension=php_pdo_pgsql.dll
- extension=php_pdo_sqlite.dll
- extension=php_pdo_mssql.dll
- extension=php_pdo_odbc.dll
- extension=php_pdo_firebird.dll
- ;extension=php_pdo_oci8.dll
各种PDO的驱动,能给加上的全给加上,不过后面的php_pdo_oci8.dll,因为我没有安装Oralce数据库,所以没有这个,就使用分号注释掉它,重启apache就可以了,当然了,如果你用别的数据库,打开对应的模块就OK了.
如果在linux下面,确信模块pdo_mysql.so已经编译进php,在php.ini下面添加:
extension=pdo_mysql.so