本地XAMPP环境PHP连接数据库报1045错误的代码问题查询
问题原因及解决方案
1 代码语法错误
代码中最直接的错误是PDO连接的DSN参数配置笔误:
你已经定义了$dbname = "ecocaa"作为目标数据库名,但构造DSN时错误将dbname的取值写成了$servername,相当于尝试连接名为localhost的数据库而非预期的ecocaa,这是触发报错的核心原因之一。
将对应行修改即可:
原错误行:$conn = new PDO("mysql:host=$servername;dbname=$servername", $username, $password);
修改后:$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
2 数据库权限排查方案
如果修改代码后仍然报1045错误,属于MySQL账号权限配置问题,按以下顺序排查即可:
- 确认你已经在XAMPP的MySQL中手动创建了
moomen用户,且对应密码确实为9124279123。XAMPP默认的MySQL管理员账号为root,默认密码为空,如果你没有创建过moomen用户,可以先替换为root账号测试连接是否正常 - 确认
moomen用户拥有ecocaa数据库的访问权限,可打开XAMPP自带的phpMyAdmin,进入权限管理页面对该账号授予对应库的操作权限 - 确认
moomen用户的允许登录主机为localhost,而非其他限定地址
修复后的完整可运行代码
<?php $servername = "localhost"; $username = "moomen"; $password = "9124279123"; $dbname = "ecocaa"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch (PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
内容的提问来源于stack exchange,提问作者Moomen S. Aldahdouh
相关产品推荐
相关产品推荐

