这是我查询数据库的两种方法。
这是我的第一个将所有结果保存在数组中的方法。然后我使用foreach循环遍历数组。
public function query($query) {
$rows = array();
if ($result = $this->mysqli->query($query)) {
if($result->num_rows > 1) {
while ($item = $result->fetch_assoc()) {
$rows[] = $item;
}
//jo else sepse nxjerr error kur ska asnje row i ben fetch kur ska row.
} else if($result->num_rows == 1) {
$rows = $result->fetch_assoc();
}
return $rows;
} else {
echo "error";
}
}
然后输出我用:
$run_query = $db->query($query);
foreach ((array)$runk_query as $data) {
....
这是我的第二种方法:
$query = $db->query("SELECT * FROM ...");
while($run_query = mysqli_fetch_array($query)) {
//OUTPUT data.
....
}
我注意到在很多情况下我需要输出结果所以我认为使用第一种方法是不好的,因为我使用while
循环然后再次使用foreach
循环以便工作已完成两次,但第二种方式不是OOP
。
有人能建议我这方面的最佳方法,或者可能的另一种更好的方法吗?
答案 0 :(得分:1)
您可以通过调用mysqli_fetch_all()替换整个第一个函数,而不是使用fetch_assoc()遍历每个记录。这样您就不必按结果构建数组结果。
然后,您可以按照惯例使用第二个foreach运行所有结果。
请参阅:http://www.php.net//manual/en/mysqli-result.fetch-all.php
或者,如果您使用的是PDO,则可以使用fetchAll()