2013-03-20 135 views
1

我试图破解在一起脚本连接到远程Oracle数据库,并执行一个简单的查询甲骨文PHP PDO异常:找不到驱动程序

通过广泛的搜索,我发现下面的脚本:

<? 

$tns = " 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = bogus.com.au)(PORT = 1521)) 
     (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = myDB) 
     ) 
    ) 
"; 


$pdo_string = 'oci:dbname='.$tns; 

try { 
    $dbh = new PDO($pdo_string, 'test', 'fake'); 
} catch (PDOException $e) { 
    echo "Failed to obtain database handle: " . $e->getMessage(); 
    exit; 
} 

$query = "SELECT * FROM someTable"; 

$stmt = $dbh->prepare($query); 

if ($stmt->execute()) { 
    echo "<h4>$query</h4>"; 
    echo "<pre>"; 
    while ($row = $stmt->fetch()) { 
     print_r($row); 
    } 
    echo "</pre>"; 
} 

?> 

但是,我收到错误could not find driver。所以我做:

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

其中返回:

mysql 
odbc 
sqlite 

这告诉我,我这样做已经安装了驱动程序,是吗?

我在做什么错? (诚​​然,我没有什么可以与Oracle没有PHP的知识数据库,这样也许我缺少公然明显..)

回答

2

您必须安装Oracle适配器PDO:

http://php.net/manual/en/ref.pdo-oci.php

+0

谢谢。我读了一遍,它说'使用--with-pdo-oci [= DIR]来安装PDO Oracle OCI扩展'我不知道如何做到这一点。你会说我在这一点上试图咬掉更多的东西吗?有没有更直接的做法呢?连接到MySQL数据库并没有那么复杂。 – kaizenCoder 2013-03-20 09:31:18

0

你必须配置您的服务器以启用PDO_OCI扩展。

转到php.ini并找到行extension=php_pdo_oci.dll并从其开始删除逗号;然后重新启动您的apache服务。