php
  • mysqli
  • 2016-08-22 125 views 0 likes 
    0

    對我的生活中,我想不通爲什麼FETCH_ASSOC()是在這裏返回false:爲什麼fetch_assoc()沒有返回值?

    $username = $_POST['username']; 
    print("Username is " . $username . "<br>"); 
    
    //Create query 
    $query = ("SELECT * FROM users WHERE username = '" . $username . "'"); 
    print($query . "<br>"); 
    
    //Run query 
    if (!$result = $db2 -> query($query)) { 
        print("Query failed!"); 
    } 
    
    if (!$user = new LG_User($result)) 
        print("Failed to create user!<br>"); 
    
    while($row = $result -> fetch_assoc()) { 
        $rows[] = $row; 
    } 
    var_dump($rows); 
    print("User is " . $user -> first_name . "<br>"); 
    

    查詢成功,並且新的用戶對象被創建,由於代碼的最後一行是打印$ user-> first_name正確。我使用相同的代碼塊填充另一頁上的$ rows數組,並且它正在工作。我在這裏做錯了什麼?如果我嘗試使用的

    while($row = mysqli_fetch_assoc($result)) { $rows[] = $row; }

    代替

    while($row = $result -> fetch_assoc()) { $rows[] = $row; }

    它仍然無法正常工作。我在這裏錯過了什麼?

    +0

    new LG_User($ result)? var_dump($結果)? – godtail

    回答

    1

    您尚未顯示構造函數LG_User的代碼,但是如果它正在從數據庫中填充$user,則它必須調用fetch函數本身。所以當它返回時,結果的所有行都被取出,並且沒有什麼可供循環讀取。

    您可以使用data_seek方法返回結果集的開頭。

    if (!$user = new LG_User($result)) 
        print("Failed to create user!<br>"); 
    $result->data_seek(0); 
    while($row = $result -> fetch_assoc()) { 
        $rows[] = $row; 
    } 
    var_dump($rows); 
    
    +0

    就是這樣!你是我的英雄 - 我很尷尬地說,我一直坐在這個控制檯上試圖調試這個問題多久。謝謝! – user1780242

    相關問題