php MySQLi获取结果最佳实践

php MySQLi获取结果最佳实践,php,mysqli,Php,Mysqli,这是我查询数据库的两种方法 这是我第一个将所有结果保存在数组中的方法。然后我使用foreach循环遍历数组 public function query($query) { $rows = array(); if ($result = $this->mysqli->query($query)) { if($result->num_rows > 1) { w

这是我查询数据库的两种方法

这是我第一个将所有结果保存在数组中的方法。然后我使用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


有人能给我推荐最好的方法吗?或者如果可能的话,推荐另一个更好的方法吗?

您可以用调用mysqli\u fetch\u all()来替换整个第一个函数,而不是用fetch\u assoc()遍历每条记录。这样,您就不必逐个结果构建数组

然后,您可以像往常一样使用第二个foreach运行所有结果

见:

或者,如果使用PDO,则可以使用fetchAll()


请参阅:

但是使用
mysqli_fetch_all()将所有结果保存在变量中是一种好方法吗然后使用
foreach
循环显示结果?我的意思是,这项工作不是完成了两次吗?您可以将处理代码(输出)放入另一个函数中,并在每次从数据库检索时从第一个函数调用它,而不是执行mysqli_fetch_all()。