PHP 致命错误:未捕获的 PDOException:找不到驱动程序

新手上路,请多包涵

我一直在尝试使用 PDO 从 PHP 连接到 MySQL。但是,我收到此错误消息:

PHP 致命错误:未捕获的 PDOException:无法在 /home/abdullah/Documents/projects/cs50_radio/public/test.php:5 中找到驱动程序堆栈跟踪:#0 /home/abdullah/Documents/projects/cs50_radio/public/test。 php(5): PDO->__construct(‘mysql:host=127….’)

PDO 已启用并安装。我检查了 phpinfo(),但我无法找出错误。

这是我用于连接的代码:

 <?php
    $user = "root";
    $pass = "root";

    $dbh = new PDO("mysql:host=127.0.0.1;dbname=radio;port=3306", $user, $pass);
    //$dbh->query('INSERT INTO users (name) VALUES ("abdullah")');
    $dbh = null;
?>

我的项目文件夹是否应该包含任何额外的驱动程序或文件?还是我的代码中遗漏了什么?

原文由 A.Emad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 864
2 个回答

要使用不同的驱动程序,您需要安装它们。

在 Windows 上,您只需取消注释 php.ini 中的一行:

 extension=php_pdo_mysql.dll

在 Debian 或类似的 Linux 发行版上,您可以使用包管理器安装扩展:

 sudo apt update
sudo apt install php7.1-mysql

记得安装正确的版本。

原文由 VeeeneX 发布,翻译遵循 CC BY-SA 4.0 许可协议

我遇到了同样的问题,这是由于我下载的 Apache 和 PHP 版本之间存在一些不兼容(不是很明显)。尝试编写一个玩具 PHP 脚本,它只创建一个新的 PDO 对象,例如:

 <?php

$dbname   = 'mydb';
$username = 'myuser';
$password = 'mypassword';
try {
    $pdo = new \PDO("mysql:host=localhost;dbname=$dbname", $username,  $password);
} catch (Exception $e) {
    print $e->getMessage() . "\n";
}
print "OK\n";

然后从命令行运行该脚本。如果您没有收到“找不到驱动程序”错误消息,则表明您的 PHP 和 Apache 版本不兼容。

原文由 flapjack 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏