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

PDO fetch返回空值求助——PHP/SQL新手技术问询

帮你排查PHP/SQL只返回---|的问题

哥们,太懂这种搜了好几个小时却摸不着头脑的感觉了——没报错,就返回个莫名其妙的---|,换谁都急!结合你说的表结构(name、room、in、out四列,6条数据),我大概率能猜到几个常见的新手坑,咱们一步步来排查:


1. 先把隐藏的错误揪出来!

很多新手的PHP默认没开启错误显示,就算代码有问题也看不到报错信息。先在你代码最开头加上这两行,强制显示所有错误:

error_reporting(E_ALL);
ini_set('display_errors', 1);

这一步能帮你快速定位到底是连接问题、SQL语法问题还是循环输出的问题。

2. 注意!in和out是SQL关键字!

你的表列里有in和out,这俩都是SQL的保留关键字,直接写在查询语句里会导致语法错误(但如果没开错误提示就看不到)。必须用反引号(`)把它们包起来,比如正确的查询语句应该是:

SELECT name, room, `in`, `out` FROM 你的表名;

这绝对是新手最容易踩的坑之一,别小看这个反引号,缺了它SQL根本识别不了这是列名。

3. 检查你的数据循环逻辑

如果你已经拿到了查询结果,但输出只有---|,大概率是循环输出的代码写错了。给你一个完整的示例代码(用mysqli为例,你可以对应改成你用的扩展):

<?php
// 开启错误提示
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 数据库连接(替换成你的真实信息)
$dbHost = 'localhost';
$dbUser = '你的用户名';
$dbPass = '你的密码';
$dbName = '你的数据库名';

$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
    die("数据库连接失败: " . mysqli_connect_error());
}

// 正确的查询语句(注意反引号)
$sql = "SELECT name, room, `in`, `out` FROM 你的表名";
$result = mysqli_query($conn, $sql);

// 检查是否有结果
if (mysqli_num_rows($result) > 0) {
    // 循环输出每一行数据
    while ($row = mysqli_fetch_assoc($result)) {
        // 这里可以改成你想要的输出格式,比如表格或者纯文本
        echo "姓名: {$row['name']} | 房间: {$row['room']} | 进入时间: {$row['in']} | 离开时间: {$row['out']}<br>";
    }
} else {
    echo "没有找到任何数据";
}

// 关闭连接
mysqli_close($conn);
?>

4. 最后确认几个细节

  • 你的数据库连接信息是不是正确?有没有连对数据库?
  • 表名是不是拼写正确?大小写敏感的数据库(比如Linux下的MySQL)要注意表名大小写!
  • 当前数据库用户有没有权限读取这个表?

先按上面的步骤排查,尤其是开启错误提示和SQL关键字的问题,应该很快就能找到原因啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:17