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
相关产品推荐
相关产品推荐

