簡體   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