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

A.E*_*mad 6 php mysql pdo

我一直在尝试使用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;
?>
Run Code Online (Sandbox Code Playgroud)

我的项目文件夹是否应包含任何其他驱动程序或文 或者我在代码中遗漏了什么

Vee*_*neX 8

要使用不同的驱动程序,您需要安装它们,在Windows上只需取消注释php.ini中的行.

extension=php_pdo_mysql.dll
Run Code Online (Sandbox Code Playgroud)

在Linux上,您使用packpage manager安装扩展:

sudo apt install php7.1-mysql
Run Code Online (Sandbox Code Playgroud)


小智 6

我遇到了同样的问题,这是由于我下载的 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";
Run Code Online (Sandbox Code Playgroud)

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


Abd*_*bdu 6

在我的 PHP 7.4 中,我没有得到php.ini。相反,我有php.ini-developmentphp.ini-product。因此,我仅创建了一个新的 php.ini 文件并将配置复制到其中。

然后我取消注释并将扩展目录更改为完整安装路径。

 extension_dir = "C:/php/ext"
Run Code Online (Sandbox Code Playgroud)

并且未注释:

 extension=pdo_mysql
Run Code Online (Sandbox Code Playgroud)

最后,重新启动服务器。