MySQLi没有返回所有行?

时间:2014-04-17 10:32:43

标签: php sql mysqli

我的查询如下

SELECT s.`uid` FROM `sessions` s

(这是一个带有LEFT JOIN的扩展查询,但要调试我删除了该连接)

仅供参考,完整的查询是

SELECT s.`uid`, u.`username`, u.`email` FROM `sessions` s LEFT JOIN `users` u ON s.`uid`=u.`user_id`

会话表中有三个结果,为了方便起见,我只是列出了这个uid

| UID |
|  0  |
|  0  |
|  1  |

当我执行上述查询时,我希望收到所有3行。在phpMyAdmin中,我这样做。在PHP中,我没有,我只接收0为UID的行。但是,在PHP中。 $ result-> num_rows是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'],
        );
    }
}

我已经尝试了普通的 - >查询($ sql),以及准备/执行方法,似乎都不起作用。

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

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

PHP和phpmyadmin获取数据的方式没有区别 严格来说,phpmyadmin只包含相同的PHP代码。

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

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

答案 1 :(得分:0)

我有一个session_regenerate_id(true);在我的会话类中,这导致它删除了足够长的时间,而另一个查询没有找到结果。添加强制读取并强制写入会话修复此问题。