Php PDO-稍后获取Assoc
我试图在while循环中回显一点html。 我在PDO和PDO协会拿我的东西 这就是我所拥有的:Php PDO-稍后获取Assoc,php,mysql,pdo,Php,Mysql,Pdo,我试图在while循环中回显一点html。 我在PDO和PDO协会拿我的东西 这就是我所拥有的: $stmt = $this->conn->prepare('SELECT * FROM books'); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $book_id = $row['id'];
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book_id = $row['id'];
$book_title = $row['title'];
$book_image = $row['image'];
$book_amz = $row['amazon'];
$book_desc = $row['description'];
$book_rating = $row['rating'];
$book_date = $row['date'];
$book_author = $row['author'];
$book_categorie = $row['categorie'];
$text = "ID: ' . $book_id . '";
}
return $text;
但它只给了我一排桌子。我甚至试过fetchAll,但它什么也没给我。为什么不使用foreach呢
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($books as $book){
$book_id = $book['id'];
$book_title = $book['title'];
// ...
}
为什么不使用foreach呢
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($books as $book){
$book_id = $book['id'];
$book_title = $book['title'];
// ...
}
问题是您正在覆盖while循环中的值。对数据库中的每个条目执行一次循环,但只返回最后一个。相反,您希望使用数组:
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$books = [];
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book['id'] = $row['id'];
$book['title'] = $row['title'];
$book['image'] = $row['image'];
$book['amz'] = $row['amazon'];
$book['desc'] = $row['description'];
$book['rating'] = $row['rating'];
$book['date'] = $row['date'];
$book['author'] = $row['author'];
$book['categorie'] = $row['categorie'];
$book['text'] = "ID: ' . {$book['id']} . '"; // << Not sure if this is what you actually want. If not, adjust accordingly.
// Append the above values to the $books array
$books[] = $book;
}
return $books;
$stmt=$this->conn->prepare('SELECT*fromsbooks');
$stmt->execute();
$books=[];
而($row=$stmt->fetch(PDO::fetch\U ASSOC))
{
$book['id']=$row['id'];
$book['title']=$row['title'];
$book['image']=$row['image'];
$book['amz']=$row['amazon'];
$book['desc']=$row['description'];
$book['rating']=$row['rating'];
$book['date']=$row['date'];
$book['author']=$row['author'];
$book['categorie']=$row['categorie'];
$book['text']=“ID:'.{$book['ID']}.'”;//问题是您正在覆盖while循环中的值。循环对数据库中的每个条目执行一次,但只返回最后一个。您希望改为使用数组:
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$books = [];
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book['id'] = $row['id'];
$book['title'] = $row['title'];
$book['image'] = $row['image'];
$book['amz'] = $row['amazon'];
$book['desc'] = $row['description'];
$book['rating'] = $row['rating'];
$book['date'] = $row['date'];
$book['author'] = $row['author'];
$book['categorie'] = $row['categorie'];
$book['text'] = "ID: ' . {$book['id']} . '"; // << Not sure if this is what you actually want. If not, adjust accordingly.
// Append the above values to the $books array
$books[] = $book;
}
return $books;
$stmt=$this->conn->prepare('SELECT*fromsbooks');
$stmt->execute();
$books=[];
而($row=$stmt->fetch(PDO::fetch\U ASSOC))
{
$book['id']=$row['id'];
$book['title']=$row['title'];
$book['image']=$row['image'];
$book['amz']=$row['amazon'];
$book['desc']=$row['description'];
$book['rating']=$row['rating'];
$book['date']=$row['date'];
$book['author']=$row['author'];
$book['categorie']=$row['categorie'];
$book['text']=“ID:'.{$book['ID']}.'”;//因此假设所看到的唯一元素是最后一个元素,这是因为每个循环都会覆盖返回的内容。有几个选项可以解决此问题。最简单的是:
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$text = "";
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book_id = $row['id'];
$book_title = $row['title'];
$book_image = $row['image'];
$book_amz = $row['amazon'];
$book_desc = $row['description'];
$book_rating = $row['rating'];
$book_date = $row['date'];
$book_author = $row['author'];
$book_categorie = $row['categorie'];
//String concatenation of text will
//give you one big string at the end to return.
$text .= "ID: '{$book_id}'";
}
return $text;
然而,这将不能很好地与您真正的引导html一起工作。您需要确保列的组合正确
你需要一些更直观的东西
使用实际的代码,它看起来像
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$bookEcho = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$bookEcho[] = '<div class="col-md-3">
<div class="thumbnail">
<span>' . $book_title . '</span>
<img src="' . $book_image . '">
<div class="book-options">
<span>Bewertung</span><br/>
' . $stars . '
<a href="books.php?id=' . $book_id . '" class="btn btn-read btn-block">Jetzt lesen</a>
</div>
</div>
</div>';
}
return $bookEcho;
因此,假设所看到的唯一元素是最后一个元素,这是因为每个循环返回的内容都会被覆盖。有几个选项可以解决此问题。最简单的是:
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$text = "";
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book_id = $row['id'];
$book_title = $row['title'];
$book_image = $row['image'];
$book_amz = $row['amazon'];
$book_desc = $row['description'];
$book_rating = $row['rating'];
$book_date = $row['date'];
$book_author = $row['author'];
$book_categorie = $row['categorie'];
//String concatenation of text will
//give you one big string at the end to return.
$text .= "ID: '{$book_id}'";
}
return $text;
然而,这将不能很好地与您真正的引导html一起工作。您需要确保列的组合正确
你需要一些更直观的东西
使用实际的代码,它看起来像
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$bookEcho = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$bookEcho[] = '<div class="col-md-3">
<div class="thumbnail">
<span>' . $book_title . '</span>
<img src="' . $book_image . '">
<div class="book-options">
<span>Bewertung</span><br/>
' . $stars . '
<a href="books.php?id=' . $book_id . '" class="btn btn-read btn-block">Jetzt lesen</a>
</div>
</div>
</div>';
}
return $bookEcho;
可能是循环的第一次迭代后由于最后的语法错误导致代码失败。请检查您的错误日志。此$text='ID:'.$book\u ID.;
可能是$text='ID:'.$book\u ID;
。不确定这是问题所在,但似乎是一个很好的猜测。抱歉,这只是一个键入错误。不要将其包含在我的代码。这仍然不正确。$text=“ID:”.$book\u ID.“;
应该是$text=“ID:”.“$book\u ID.”;
或$text=“ID:”{$book\u ID}”
这是我实际代码中的内容:可能是循环的第一次迭代后由于最后的语法错误导致代码失败。请检查错误日志。这$text='ID:'。$book_ID.;
应该是$text='ID:'。$book_ID;
。不确定这是问题所在,但似乎是一个很好的猜测y、 这只是一个键入错误。在我的代码中没有它。这仍然是不正确的$text=“ID:”。“
应该是$text=“ID:”。“$book\u ID。”;
或$text=“ID:”{$book\u ID}”;
这就是我在实际代码中所做的:也尝试过了,也只给了我一行。是的,我有两个条目。谢谢,这是一个没有解决问题的结构更改:在不使用它们的情况下重复地踩踏相同的变量。抱歉。我的意图是提供一个解决方案。虽然这是一个不同的控制结构,但我的我的目标是提供一些帮助。我也试过了,也只给了我一行。是的,我有两个条目。谢谢,这是一个没有解决问题的结构更改:在不使用它们的情况下重复地踩踏相同的变量。抱歉。我的意图是提供一个解决方案。虽然这是一个不同的控制结构,但我的目标是提供一些帮助。感谢您的回答。非常感谢。但它只给了我“数组”。我删除了{},因为它会给我一个错误(意外的{),如果您尝试回显数组,这将不起作用。您将需要使用其中一个。此外,它似乎不是PHP语法错误(请参阅)。我不确定您以后使用此字符串的目的,但可能这就是导致错误的原因。谢谢您的回答。非常感谢。但它只提供了“数组”。我删除了{},因为它给了我一个错误(意外{)如果您试图回显数组,这将不起作用。您需要使用其中一个。此外,这似乎不是PHP语法错误(请参阅)。我不确定您以后使用此字符串的目的是什么,但可能这就是导致错误的原因。我可以想象,但您在使用它的布局时会遇到一些问题。字符串比数组更难解析。尽管我会延迟查看详细信息,直到您回到启动此操作的函数中。目前我没有任何布局问题。我会接受这个,然后看看如果我有更多的条目会发生什么。谢谢,我会这么想,但是你在使用它的布局时会遇到一些问题。字符串比数组更难解析。虽然我会延迟查看详细信息,直到你回到启动此功能的函数中。现在我没有任何布局问题。我会我拿着这个然后看看如果我有更多的条目会发生什么谢谢