繁体   English   中英

MySQLi不返回所有行?

[英]MySQLi Not returning all rows?

我有如下查询

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`

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

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

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

我试过普通-> query($ sql),还有prepare / execute方法,似乎都不起作用。

我能想到的唯一冲突是,我已经从会话类中拉出该行,但是我如何才能使其返回所有行,甚至包括已经从另一个表中的该表中拉出的行呢?

任何帮助将不胜感激

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

因此,无需在代码中查找任何内容。 问题显然出在数据结构/联接/其他任何您省略的地方。

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

我有一个session_regenerate_id(true); 在我的会话类中,这导致它删除值的时间恰好足以使其他查询找不到结果。 在会话中添加强制读取和强制写入可解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM