连接失败:找不到驱动程序


Connection falied: could not find driver

我用的是Windows 10,使用的是WAMP。我试图创建一个登录表单与准备的PDO语句。下面是我的connect.php脚本的代码,发出错误:"连接失败:无法找到驱动程序"。

<?php
$server = 'localhost';
$username = 'root';
$password = '';
$db = 'login';
try{
    $conn = new PDO("mysqli:host=$server;dbname=$db", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected Successfully";
}catch(PDOException $e){
    echo "Connection falied: " . $e->getMessage();
}
 ?>

这是我的php.ini文件中的一个列表,显示了与pdo相关的dll

extension=php_openssl.dll
extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mysql.dll
extension=php_pdo.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
;extension=php_shmop.dll

WAMP显示"没有dll文件":-php_mysqli-php_pdo

我有"php_pdo"dll文件在wamp/bin/php5.6.25/和在wamp/bin/php5.6.25/ext/以防万一。我找不到php_mysqli的下载,但我不认为我需要PDO,虽然如果有人有下载链接会很好。

所以我的问题是,我只是安装dll文件到错误的目录,还是什么?我不知道该怎么办,但我刚安装了WAMP,我不能使用PDO。我应该使用另一个客户端(我不确定他们叫什么)。

我想你打错了,用mysql代替msqli:

$conn = new PDO("mysql:host=$server;dbname=$db", $username, $password);

同样来自注释:

  1. 尝试将其放入php.ini: extension_dir = "c:'php5'ext"并指向扩展名
  2. 将php_pdo.dll移到其他PDO扩展之前,并重新启动WAMP

编辑:我决定改变我的答案成为一个社区维基,因为我觉得不应该有任何代表应该这样做。另外,这个问题有多个错别字。


原始回答:

语法为:

  • mysql:host

而非mysqli。我希望这不是另一个"打字错误"根据你原来的帖子https://stackoverflow.com/revisions/40444027/1 new PDO("msqli:host

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

按照手册:

  • http://php.net/manual/en/pdo.connections.php

注意:Wamp应该准备好使用"开箱即用",不需要添加任何驱动程序。

我也用Wamp和xampp,从来没有出现过问题。

另外,Wamp有不同的安装方式(32位和64位),所以确保你选择了正确的。

  • http://www.wampserver.com/en/

您也可以尝试安装xampp

  • https://www.apachefriends.org/

也使用错误报告,这在这里会有帮助:

  • http://php.net/manual/en/function.error-reporting.php