在不知道php字段的情况下循环执行fetchall


Loop through fetchall without knowing the fields php

我有一个简单的查询,它将从用户表中获取所有信息

$query = $this->pdo->prepare('SELECT * FROM `users`');
$query->execute();
return $query->fetchAll();

然后我会有一个像一样的foreach循环

$results = $User->getUser();
foreach($results as $result){
echo $result['fname'];
echo $result['lname'];
}

但是有没有一种方法可以显示每个字段而不写每个字段的名称?

首先,修复您的返回fetchAll以指定返回样式,如下所示:

return $query->fetchAll(PDO::FETCH_ASSOC);

然后你可以使用一个内循环和外循环,如下所示:

//get the results
$results = $User->getUser();
//loop over the results, setting $result to an array representing each row
foreach($results as $result){
    //loop over each $result (row), setting $key to the column name and $value to the value in the column.
    foreach($result as $key=>$value){
        //echo the key and value.
        echo "{$key} = {$value}<br>";
    }
}

这将输出所有列及其值,而不管数组中有哪些列。根据注释,您可以看到我所做的是,使用您的代码,在外部数组上循环,该数组是查询中每行的数组。然后从每一行遍历数组,得到该列中的列名和值。现在,我只是在回应专栏和价值观。你可能想做更多的事情,比如把它回声到一个表上,或者不管你的最终目标是什么