【问题标题】:Uncaught PDOException: could not find driver even when the extensions are there未捕获的 PDOException:即使存在扩展也找不到驱动程序
【发布时间】:2018-11-22 18:33:10
【问题描述】:

另一个让我发疯的错误。 我已经阅读了 stackoverflow 中的 50 篇文章,并尝试了所有不同的解决方案:

  • 检查 php.ini 以查看扩展是否已启用以及文件夹以检查 dll 是否存在

  • 还尝试从最新的 php 版本中提取 php_pdo_mysql.dll 文件,检查 xampp 原始文件是否损坏或损坏。

  • 在环境变量中设置路径

这是我在本地环境中使用的:

  • Xampp 7.2.4
  • PHP 7.2.4
  • Apache 2.4.33

这是我的代码:

return new PDO('
    mysql:host='.Env::getInstance()->env('dbhost').';
    dbname='.Env::getInstance()->env('dbname'),
    Env::getInstance()->env('dbusername'),
    Env::getInstance()->env('dbpassword')
);

有什么我没有尝试过的吗?请我想一劳永逸地解决这个问题。

提前致谢。

【问题讨论】:

  • 什么是Env?我假设您使用的是 MySQL?
  • @adam 是的。 MySQL 和 env 是一个自定义类来带我的配置变量,仅此而已

标签: php pdo xampp


【解决方案1】:

传递给 PDO 构造函数的参数必须像下面 php 手册示例中的 $dsn。

<?php
/* Connect to a MySQL database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

您的第一个参数似乎有错误的内容。

【讨论】:

  • 是的,这就是答案,愚蠢的我试图让它看起来很漂亮。非常感谢
猜你喜欢
  • 2017-05-13
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 2014-01-23
  • 2016-09-03
  • 2022-01-23
相关资源
最近更新 更多