我一直在尝试使用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)
我的项目文件夹是否应包含任何其他驱动程序或文 或者我在代码中遗漏了什么
要使用不同的驱动程序,您需要安装它们,在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 版本不兼容。
在我的 PHP 7.4 中,我没有得到php.ini。相反,我有php.ini-development和php.ini-product。因此,我仅创建了一个新的 php.ini 文件并将配置复制到其中。
然后我取消注释并将扩展目录更改为完整安装路径。
extension_dir = "C:/php/ext"
Run Code Online (Sandbox Code Playgroud)
并且未注释:
extension=pdo_mysql
Run Code Online (Sandbox Code Playgroud)
最后,重新启动服务器。