2016-08-22 16 views
0

は)ここにfalseを返している:fetch_assoc()が値を返さないのはなぜですか?なぜ(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 = $result -> fetch_assoc()) { $rows[] = $row; }

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

を使用しようとすると、それはまだ動作しません。私はここで何が欠けていますか?

+0

新しいLG_User($ result)? var_dump($ result)? – 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

関連する問題