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

PHP登录脚本无法读取数据库数据,邮箱校验始终失败求助

解决登录脚本中邮箱存在检查失败的问题

让我帮你排查下这个问题,看起来你的登录脚本里有几个关键错误导致了始终触发“邮箱不存在”的跳转,下面逐一分析并给出修正方案:

1. SQL语句中的表名引用错误

你的查询语句里用单引号包裹了表名'USERS',但在MySQL中,表名和列名的正确引用方式是使用反引号`(无特殊字符时也可以省略),单引号仅用于包裹字符串值。这个错误会直接导致SQL查询执行失败,进而mysqli_num_rows($emailresult)返回0,触发邮箱不存在的跳转逻辑。

修正后的SQL语句:

$sql = "SELECT * FROM `USERS` WHERE EMAIL = '$useremail';";

2. 未检查SQL查询是否执行成功

你直接调用mysqli_num_rows处理查询结果,但如果SQL语句报错(比如上面的表名错误),$emailresult会返回false,此时mysqli_num_rows会返回0,但本质是查询失败而非无匹配数据。建议在执行查询后立即添加错误检查:

$emailresult = mysqli_query($connection, $sql);
// 检查查询是否成功
if (!$emailresult) {
    die("SQL查询错误: " . mysqli_error($connection));
}
$emailresultcheck = mysqli_num_rows($emailresult);

3. 数据库连接文件的语法错误

你的connect.php中die的用法存在问题,echo语句不会被执行(因为die会直接终止脚本),且错误信息拼接逻辑错误,修正后的连接文件如下:

<?php
$connection = mysqli_connect("localhost", "root", "");
if (!$connection) {
    die("Failed to connect database: " . mysqli_error($connection));
}
$dbselect = mysqli_select_db($connection, "dhctest");
if (!$dbselect) {
    die("Failed to Select database: " . mysqli_error($connection));
}
?>

这样如果连接或选库失败,会直接输出明确的错误信息,帮助你快速定位问题。

4. POST数据检查的运算符错误

你使用了位运算符&来判断POST数据是否存在且非空,这是错误的,应该使用逻辑与运算符&&:

if (isset($_POST) && !empty($_POST)) {

5. Session赋值的变量未定义

在登录成功的逻辑中,你尝试将未定义的$email赋值给Session,应该改为已定义的$useremail或数据库查询到的$row['EMAIL']:

$_SESSION['email'] = $useremail;
// 或者
$_SESSION['email'] = $row['EMAIL'];

额外调试建议

为了更方便排查问题,建议在submit2.php开头开启PHP错误提示:

error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
require_once('connect.php');

按照以上步骤修正后,应该就能解决邮箱存在检查失败的问题了。

内容的提问来源于stack exchange,提问作者Ashley Nesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:35