提问人:magicalassembler 提问时间:12/17/2022 更新时间:12/17/2022 访问量:43
Foreach 循环不会显示卡片 php [已关闭]
Foreach loop wont show card php [closed]
问:
所以我正在一个电子商务网站上工作,我现在正在产品页面上工作,专门从数据库中显示它们。每次我添加 foreach 循环时,卡片都会完全消失,我非常迷茫为什么它会这样做。
下面是该类的代码:
<?php
class DatabaseQueries {
private $servername = "localhost";
private $username = "root";
private $password = "";
private $database = "adh";
public $conn;
// Database Connection
public function __construct()
{
$this->conn = new mysqli($this->servername, $this->username, $this->password, $this->database);
if(mysqli_connect_error()) {
trigger_error("Failed to connect to MySQL: " . mysqli_connect_error());
}else{
return $this->conn;
}
}
public function getRecords($table) {
$query = "SELECT * FROM $table";
$result = $this->conn->query($query);
if($result){
if($result->num_rows > 0){
$data = array();
while($row = $result->fetch_assoc()) {
$date[] = $row;
}
return $data;
}else{
echo "No records have been found.";
}
}else{
echo "Error in:" . $query . "<br>" . $this->conn->error;
}
}
}
这是商店页面的代码:
<?php
include './classes/databaseQueries.php';
$obj = new DatabaseQueries();
?>
<div class="container">
<div class="row">
<div class="col-3">
<div class="card border-0" style="width: 18rem;">
<img src="./img/png1.png" class="card-img-top" alt="...">
<div class="card-body">
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the
card's content.</p>
</div>
</div>
<?php
$products = $obj->getRecords('products');
foreach($products as $product){
?>
<div class="card border-0" style="width: 18rem;">
<img src="./<?php echo $product['img_address'] ?>" class="card-img-top" alt="...">
<div class="card-body">
<p class="card-text"><?php echo $product['name'] ?></p>
<p class="card-text"><?php echo $product['price'] ?></p>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
此外,如果您想分叉存储库并亲自查看,请链接到存储库(这是在分支产品上): https://github.com/tcudjoe/apresdesheures/tree/products
我试图查看问题是否是由于函数getRecords()引起的,但是当var_dumping时,它似乎给了我正确的信息。
我什至添加了一张没有任何 php 代码的卡片,这似乎工作正常。
我检查了列名是否错误,它们都匹配。
我检查了数据库的连接是否有问题,一切似乎都很好。
答:
1赞
coderpolo
12/17/2022
#1
你在这里有一个错别字:
$data = array();
while($row = $result->fetch_assoc()) {
$date[] = $row;
}
return $data;
将该行放在$datE数组中,而不是$datA
我认为如果你在循环之前var_dump($products),你将有一个空的数据数组
评论
0赞
magicalassembler
12/17/2022
我感谢您的服务,以发现我的疏忽!
1赞
coderpolo
12/17/2022
不客气,如果它解决了您的产品循环问题,请不要忘记选择作为答案,祝您好运:)
0赞
Nigel Ren
12/17/2022
通常,您不会回答错别字类型问题。它们通常会因拼写错误而被关闭,并可能被删除。
评论