PHP 中的未知数据库错误,但它存在于 PHPMyAdmin 中

Unknown database error in PHP but it exists in PHPMyAdmin

提问人:Dharamveer Grewal 提问时间:3/13/2020 最后编辑:Your Common SenseDharamveer Grewal 更新时间:10/28/2022 访问量:3069

问:

我正在使用 PDO 连接到 mySql 数据库。我无法连接到我创建的任何数据库,尽管我可以连接到已经创建的数据库(默认情况下已经创建)。我正在使用 wamp 服务器。

<?php
try{
$dbh=new PDO("mysql:host=localhost;dbname=mydata","root","");
}catch(Exception $e){
    die("ERROR: Couldn't connect. {$e->getMessage()}");
}
?>

如果我用之前在wamp服务器中创建的数据库mysql替换mydata,那么代码就可以完美运行。唯一的问题是我创建的数据库。我尝试过为mydata提供与mysql数据库相同的权限,但它不起作用。

enter image description here

php mysql mysqli pdo phpmyadmin

评论

0赞 Shadow 3/13/2020
您是否连接到与phpmyadmin相同的mysql实例?
0赞 Carlos Garcia 3/13/2020
@LuckyGrewal。我认为人们之所以投反对票,是因为你没有帮助缩小问题的范围,例如,你应该把你得到的错误消息放进去。这个问题的答案可以是任何东西(顺便说一句,我没有对你投反对票:))

答:

5赞 Your Common Sense 3/13/2020 #1

要么是

  • 拼写错误。只需再次检查名称即可。
  • 或者PHP代码和PHPMyAdmin连接到不同的数据库

例如,如果您的 PC 上安装了多个数据库服务器,则可能会发生后者。

要获取证明,请在 phpmyadmin 中运行以下查询:

show databases;

然后在 PHP 中运行相同的查询,使用任一 PDO:

$host = 'your db host';
$user = 'your db username';
$pass = 'your db password';

$pdo = new PDO("mysql:host=$host", $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$databases = $pdo->query('show databases')->fetchAll(PDO::FETCH_COLUMN);
var_dump($databases);

或者 mysqli

$host = 'your db host';
$user = 'your db username';
$pass = 'your db password';

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass);
$databases = $mysqli->query('show databases')->fetch_all();
var_dump($databases);

并比较输出。它将向您显示存在拼写错误,或者 PHPMyAdmin 和 PHP 确实连接到不同的数据库服务器。

然后,您可以在 PHPmyAdmin 中检查配置文件,以确保它连接到正确的服务器