我试图了解fetch_assoc如何/为何如此工作。 我有以下代码:
$results = $connectToDb->fetch("SELECT * FROM customer");
$resultsArray = $results->fetch_assoc();
print_r($resultsArray); //print_r 1
while($row = $results->fetch_assoc()){
print_r($row); //print_r 2
}
查询从表中返回3行。 为什么第一个print_r只返回查询数据的第一行,而第二个print_r返回全部3?如何将fetch_assoc放入while循环中,告诉它多次执行该操作?我读到fetch_assoc返回一个关联数组或NULL,但我正在努力理解while循环"告诉"如果有意义的话,fetch_assoc来获取下一行?
谢谢。
答案 0 :(得分:15)
让我们尝试理解您的代码及其工作原理:
$results = $connectToDb->fetch("SELECT * FROM customer");
变量$results
包含一系列由查询返回的行。集合的大小可以是0到n。
$resultsArray = $results->fetch_assoc();
此行从集合中获取第一个元素。如果集合为空,则返回NULL
。
while($row = $results->fetch_assoc()){
}
可以通过以下步骤解耦:
$row = $results->fetch_assoc()
并返回数组元素或 NULL 。$row = $results->fetch_assoc()
中的while
并获得更多价值,并获得以下声明:while(array(with elements))
或while(NULL)
。while(array(with elements))
它解析True
中的while条件并允许执行迭代。while(NULL)
它会解析False
中的while条件并退出循环。 答案 1 :(得分:2)
我认为它很有用:
function get_posts(){
$posts = array();
if ($result = $mysqli->query("SELECT id, post_userid, name, lang, country, post_image, post_date, post_date_updated FROM posts ORDER BY `post_date` DESC ;")) {
while ($row = $result->fetch_assoc())
{
$posts[$row['id']] = $row ;
}
} else {
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
return $posts;
}