Php MySQLi没有返回所有行吗?

Php MySQLi没有返回所有行吗?,php,sql,mysqli,Php,Sql,Mysqli,我有一个问题如下 SELECT s.`uid` FROM `sessions` s (这是一个具有左连接的扩展查询,但为了调试,我删除了该连接) 仅供参考,完整查询已完成 SELECT s.`uid`, u.`username`, u.`email` FROM `sessions` s LEFT JOIN `users` u ON s.`uid`=u.`user_id` sessions表中有三个结果,为了方便起见,我只列出uid | UID | | 0 | | 0 | | 1

我有一个问题如下

SELECT s.`uid` FROM `sessions` s
(这是一个具有左连接的扩展查询,但为了调试,我删除了该连接)

仅供参考,完整查询已完成

SELECT s.`uid`, u.`username`, u.`email` FROM `sessions` s LEFT JOIN `users` u ON s.`uid`=u.`user_id`
sessions表中有三个结果,为了方便起见,我只列出uid

| UID |
|  0  |
|  0  |
|  1  |
当我执行上述查询时,我希望收到所有3行。在phpMyAdmin,我知道。在PHP中,我没有,我只接收UID为0的行。但是,在php中。$result->num_行是2,而不是3。这是我的php代码:

$sql = "SELECT s.`uid` FROM `sessions` s";
$result = $acpDB->query($sql);
$staffList = array();
if ($result->num_rows > 0) {
    while ($data = $result->fetch_assoc()) {
        var_dump($data);
        $staffList[] = array(
            'username' => $data['username'],
            'email' => $data['email'],
        );
    }
}
我尝试了plain->query($sql)和prepare/execute方法,这两种方法似乎都不起作用

我能想到的唯一冲突是,我已经从会话类中提取了该行,但是我如何才能让它返回所有行,甚至是已经从另一个类的表中提取的行

任何帮助都将不胜感激


Dan

PHP和phpmyadmin获取数据的方式没有区别。
严格地说,phpmyadmin由相同的PHP代码组成

因此,代码中没有任何内容可供查找。这个问题显然存在于数据结构/连接/您忽略的其他内容中


另一个常见的原因是您连接到的数据库不同。

我有一个会话\u regenate\u id(true);在我的session类中,这导致它删除值的时间刚好够另一个查询找不到结果。添加会话的强制读取和强制写入修复了此问题。

顺便问一下,uid中的“u”不是代表“唯一”吗?@YourCommonSense我认为这是表的名称,因此可以轻松完成左连接等操作。但top查询语句也会出现同样的问题。如果我去掉另一个的s,我仍然会得到相同的结果。但从您的其他评论中,我已经了解到该字段没有唯一的索引,我看到,在我的情况下,它意味着用户,因此用户idit是不可能的,我确信您正在修改
选择之前的某个位置的数据,您只是没有注意它。可能是一个函数,其中有一个delete,但你忘记了。在你的地方,我会逐行重新检查我的代码。。。这有什么帮助吗?同一个查询返回两个不同的结果,phpMyAdmin返回所有结果,PHP返回所有结果,除了先前从sessions脚本返回的结果(在我上面输入的代码之前运行),我认为这一定与此有关,但我不知道如何解决此问题。此代码返回表中的所有行。表示只有两行。要么删除了一行,要么查询不同的数据库,要么以错误的方式查看结果。这些问题都与编程无关。它应该返回所有行,但它不返回。数据库中的结果直到页面运行时结束时才会更改,因此它一定与编程有关