我一直在尝试使用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;
?>
我的项目文件夹是否应包含任何其他驱动程序或文件? 或者我在代码中遗漏了什么
答案 0 :(得分:6)
要使用您需要安装它们的不同驱动程序,在Windows上只需取消注释php.ini中的行。
extension=php_pdo_mysql.dll
在Linux上,您使用packpage manager安装扩展程序:
sudo apt install php7.1-mysql
答案 1 :(得分:3)
我遇到了同样的问题,因为我下载的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版本之间不兼容。
答案 2 :(得分:1)
在我的PHP 7.4中,我没有php.ini,而是有php.ini-development和php.ini-production。因此,我仅创建了一个新的php.ini文件,并将配置复制到其中。然后,我取消注释并将扩展目录更改为完整的安装路径。
extension_dir = "C:/php/ext"
且未注释
extension=pdo_mysql
答案 3 :(得分:0)
好的,扩展名本身有问题。它有助于重新安装MySQL扩展。这是PHP 7.3的示例:
sudo apt purge php7.3-mysql
sudo apt install php7.3-mysql
sudo service apache2 restart