Php PDO foreach回显相同的值
嗨,我使用PDO连接到数据库,我有一个类,它有一个函数来查看查询结果,在一个表中,我有相同的名字Juan和Pedro,但当我使用foreach循环打印它们时,我得到Juan打印7次Php PDO foreach回显相同的值,php,pdo,foreach,Php,Pdo,Foreach,嗨,我使用PDO连接到数据库,我有一个类,它有一个函数来查看查询结果,在一个表中,我有相同的名字Juan和Pedro,但当我使用foreach循环打印它们时,我得到Juan打印7次 class Posts extends Connection{ public function __construct(){ parent::__construct(); } public function get_result(){ $res=self::$c
class Posts extends Connection{
public function __construct(){
parent::__construct();
}
public function get_result(){
$res=self::$conn->prepare("SELECT * FROM POSTS");
$res->execute();
$array=$res->fetch(PDO::FETCH_ASSOC);
foreach($array as $value){
echo $array['AUTHOR'] . "<br>";
}
}
}
class Posts扩展了连接{
公共函数构造(){
父项::_构造();
}
公共函数get_result(){
$res=self::$conn->prepare(“从帖子中选择*);
$res->execute();
$array=$res->fetch(PDO::fetch_ASSOC);
foreach($array作为$value){
echo$array['AUTHOR']。“
”;
}
}
}
问题出在这里
public function get_result(){
$res=self::$conn->prepare("SELECT * FROM POSTS");
$res->execute();
$array = $res->fetch(PDO::FETCH_ASSOC);
// $array has fields for ONE fetched row.
// here you iterate over fields of ONE fetched row
// and echo one field `AUTHOR`
foreach ($array as $value) {
echo $array['AUTHOR'] . "<br>";
}
}
问题出在这里
public function get_result(){
$res=self::$conn->prepare("SELECT * FROM POSTS");
$res->execute();
$array = $res->fetch(PDO::FETCH_ASSOC);
// $array has fields for ONE fetched row.
// here you iterate over fields of ONE fetched row
// and echo one field `AUTHOR`
foreach ($array as $value) {
echo $array['AUTHOR'] . "<br>";
}
}
您使用的是
PDOStatement::fetch()
,它将只获取一行(第一行,下一行)。
因此,您迭代了一行,这给了您7圈(因为您显然有7列)的$array['AUTHOR']
相同的结果
由于需要整个结果集,您需要使用fetchAll()
这将返回一个包含所有行的数组,然后您可以对其进行迭代
public function get_result(){
$res=self::$conn->prepare("SELECT * FROM POSTS");
$res->execute();
$array=$res->fetchAll(PDO::FETCH_ASSOC);
foreach($array as $row){
echo $row['AUTHOR'] . "<br>";
}
}
公共函数get_result(){
$res=self::$conn->prepare(“从帖子中选择*);
$res->execute();
$array=$res->fetchAll(PDO::FETCH_ASSOC);
foreach($array作为$row){
echo$row['AUTHOR']。“
”;
}
}
您使用的是PDOStatement::fetch()
,它只会得到一行(第一行,下一行)。
因此,您迭代了一行,这给了您7圈(因为您显然有7列)的$array['AUTHOR']
相同的结果
由于需要整个结果集,您需要使用fetchAll()
这将返回一个包含所有行的数组,然后您可以对其进行迭代
public function get_result(){
$res=self::$conn->prepare("SELECT * FROM POSTS");
$res->execute();
$array=$res->fetchAll(PDO::FETCH_ASSOC);
foreach($array as $row){
echo $row['AUTHOR'] . "<br>";
}
}
公共函数get_result(){
$res=self::$conn->prepare(“从帖子中选择*);
$res->execute();
$array=$res->fetchAll(PDO::FETCH_ASSOC);
foreach($array作为$row){
echo$row['AUTHOR']。“
”;
}
}
打印($array)
。您想使用fetchAll
<代码>获取仅获取一行。这一行将有7列,因此您可以循环遍历这些列,但只回显一个特定列。@u\u mulder我已经尝试打印出与var\u dump几乎相同的内容。它不能帮助我找到解决问题的方法problem@Jeff我尝试了fetchAll,但没有成功:(.print\r($array)
。您想使用fetchAll
fetch
只获取一行。这一行将有7列,因此您可以循环遍历这些列,但只回显一个特定列。@u\u mulder我已经尝试打印出与var\u dump几乎相同的内容。它无法帮助我找到解决问题的方法problem@Jeff我试过了,但我没有不走运:(.我知道怎么做,先生,但我严格尝试使用foreach循环,无论如何,谢谢。我知道怎么做,先生,但我严格尝试使用foreach循环,无论如何,谢谢。它按我需要的方式工作。我正试图直接这样做:foreach($array=$res->fetchAll(PDO::FETCH_ASSOC)as$row){echo$row['AUTHOR']。“”;}我不知道为什么它不能像我尝试的那样工作,但是你帮了我很多,谢谢。它按照我的需要工作。我尝试直接这样做:foreach($array=$res->fetchAll(PDO::FETCH\u ASSOC)as$row){echo$row['AUTHOR'].“
”;}我不知道为什么它不能像我尝试的那样工作,但是你帮了我很多,谢谢。