PHP登录功能报错"No database selected"问题排查求助
解决PHP登录功能的"No database selected"报错
嘿,这问题我熟!你遇到的核心问题是代码里既没正确完成数据库连接,又把选库的关键代码注释掉了,而且还在用早就被PHP废弃的mysql_*系列函数,咱们一步步把它搞定:
1. 先修复眼前的选库错误
看你贴的代码,有两个明显的坑:
mysql_connect里的密码参数是空的,明明定义了DB_PASSWORD却没用上- 最关键的
mysql_select_db被注释掉了,这直接导致程序不知道要操作哪个数据库
先把这部分代码修正:
<?php define('DB_HOST', 'localhost'); define('DB_NAME', 'phplogin'); define('DB_USER','adminuser'); define('DB_PASSWORD','adminuser'); // 用定义好的完整参数连接数据库 $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); // 必须执行选库操作,这一步绝对不能注释! $db_selected = mysql_select_db(DB_NAME, $con) or die("Failed to select database: " . mysql_error()); // 后续的登录逻辑代码...
2. 强烈建议换掉过时的mysql_*函数
mysql_*在PHP 5.5就被标记为废弃,PHP 7直接移除了这个扩展,用它不仅有兼容性问题,还存在安全隐患。推荐换成mysqli或者PDO,这里给你一个mysqli面向过程的示例(更贴近你原来的写法):
<?php define('DB_HOST', 'localhost'); define('DB_NAME', 'phplogin'); define('DB_USER','adminuser'); define('DB_PASSWORD','adminuser'); // 创建连接时直接指定数据库,省掉单独选库的步骤 $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // 检查连接是否成功 if (mysqli_connect_errno()) { die("Failed to connect to MySQL: " . mysqli_connect_error()); } // 处理登录提交的逻辑(示例) if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 先对用户输入做转义,防止SQL注入 $username = mysqli_real_escape_string($con, $_POST['username']); $password = mysqli_real_escape_string($con, $_POST['password']); // 注意:绝对不要存明文密码!要用password_hash生成哈希值存储 $query = "SELECT * FROM users WHERE username = '$username'"; $result = mysqli_query($con, $query); if (mysqli_num_rows($result) === 1) { $user = mysqli_fetch_assoc($result); // 用password_verify验证密码哈希 if (password_verify($password, $user['password'])) { // 登录成功,比如设置Session跳转到后台 session_start(); $_SESSION['user_id'] = $user['id']; header('Location: dashboard.php'); exit; } else { echo "用户名或密码错误"; } } else { echo "用户名或密码错误"; } }
3. 额外排查点
- 确认你的MySQL里确实存在
phplogin这个数据库 - 确认
adminuser这个MySQL账号有访问phplogin数据库的权限 - 开发环境下可以开启错误提示,方便排查:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者dummyuser
相关产品推荐
相关产品推荐

