查询结果为空通常是因为sql语句拼写错误、表名或字段名不匹配、连接配置有误,或者查询条件过滤了所有数据。排查时先检查数据库连接是否成功,再打印实际执行的sql语句进行验证,最后确认返回结果集是否为空数组。

mysqli_query执行失败与语法错误排查
当mysqli_query返回false时,说明SQL语句存在语法错误或权限问题。此时应通过mysqli_error()获取具体的错误信息,而不是仅仅判断结果是否为空。这能直接定位是表不存在、字段类型不匹配还是SQL关键字拼写错误。

$link = mysqli_connect("localhost", "user", "password", "database");
if (!$link) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM users WHERE status = 1";
$result = mysqli_query($link, $sql);
if (!$result) {
echo "Query Error: " . mysqli_error($link);
} else {
if (mysqli_num_rows($result) == 0) {
echo "No data found.";
} else {
while ($row = mysqli_fetch_assoc($result)) {
print_r($row);
}
}
}
查询条件导致无数据返回的排查
如果mysqli_query执行成功但mysqli_num_rows为0,通常是WHERE条件过于严格或数据本身不符合条件。排查时应移除WHERE子句测试全表数据,或检查输入参数是否正确转义和赋值。确保数据库中存在符合当前查询条件的记录是关键。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。

$status = 1;
$sql = "SELECT * FROM users WHERE status = ?";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "i", $status);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (mysqli_num_rows($result) == 0) {
echo "Condition filtered out all records. Check input or data.";
} else {
while ($row = mysqli_fetch_assoc($result)) {
print_r($row);
}
}
基于mysqli_fetch_assoc返回空值的循环处理问题
在使用while循环遍历结果时,如果忘记调用mysqli_fetch_assoc或错误地使用了mysqli_fetch_array且未指定类型,可能导致数据读取异常或提前结束。确保在循环体内正确获取每一行关联数组,并检查数组键是否存在。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










