php
  • mysqli
  • 2016-08-22 143 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

    相关问题