对于我的生活,我无法弄清楚为什么fetch_assoc()在这里返回false:
$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-&gt; first_name。我正在使用相同的代码块来填充另一个页面上的$ rows数组,它正在运行。我在这做错了什么?如果我尝试使用
while($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
而不是
while($row = $result -> fetch_assoc()) {
$rows[] = $row;
}
它仍然不起作用。我在这里缺少什么?
答案 0 :(得分: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);