You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:10