提问人: 提问时间:3/1/2020 最后编辑:Dharman 更新时间:11/10/2022 访问量:897
如果 mysqli_fetch_assoc 为空,则显示一些 html,而循环 php [duplicate]
Display some html if mysqli_fetch_assoc is empty while loop php [duplicate]
问:
我用来从数据库中获取数据,我想显示,就像没有找到任何结果一样,结果为空或空。我试过用类似的东西:那行不通。 有效,但如果不显示工作(如果可用)。while loop
if/else
if (empty($jobs)) echo 'nothing found';
if(!mysqli_fetch_assoc($jobs))
圈
<?php while ($job = mysqli_fetch_assoc($jobs)) { ?>
<tr class="custom-table-body-titles">
<td><?php echo h($job['updated_at']); ?></td>
<td>
<a href="#" class="text-dark"><?php echo h($job['title']); ?></a>
</td>
<td>0/<?php echo h($job['required_freelancers']); ?></td>
<td><?php echo h($job['delivery_time']); ?> Days</td>
<td>$<?php echo h($job['budget']); ?></td>
<td>
<a href="job_details.html" class="btn btn-sm btn-primary">Apply</a>
</td>
</tr>
<?php } ?>
答:
1赞
Bär Ger
3/1/2020
#1
在开始循环之前,您必须进行验证以检查是否找到任何结果。假设是 返回的实例。$jobs
mysqli_result
mysqli_query()
if (mysqli_num_rows($jobs) > 0)
{
// your while loop
}
else
{
echo "no jobs found";
}
评论
0赞
Your Common Sense
3/1/2020
这个答案助长了一种不好的做法,最好不要被点赞
1赞
Dharman
3/1/2020
#2
你应该尽可能地将PHP和HTML分开。
您可以在之前将所有结果提取到数组中,然后在该数组上获取 foreach。
$jobs = $jobs->fetch_all(MYSQLI_ASSOC);
if($jobs) {
foreach ($jobs as $job) {
}
} else {
}
1赞
Your Common Sense
3/1/2020
#3
一个好问题,可悲的是,大多数时候都回答错了。
将与数据库相关的代码和 HTML 代码混合在一起是一种非常糟糕的做法。永远不应该有这样的 while 循环。
相反,数据应该被提取到数组中,
$jobs = [];
while ($row = mysqli_fetch_assoc($result)) {
$jobs[] = $row;
}
然后用于输出数据。一旦你有了这个数组,你就可以用它来判断查询是否返回了任何数据:
<?php if ($jobs) { ?>
<?php foreach ($jobs as $job) { ?>
<tr class="custom-table-body-titles">
<td><?php echo h($job['updated_at']); ?></td>
<td>
<a href="#" class="text-dark"><?php echo h($job['title']); ?></a>
</td>
<td>0/<?php echo h($job['required_freelancers']); ?></td>
<td><?php echo h($job['delivery_time']); ?> Days</td>
<td>$<?php echo h($job['budget']); ?></td>
<td>
<a href="job_details.html" class="btn btn-sm btn-primary">Apply</a>
</td>
</tr>
<?php } ?>
<?php } else {?>
no data
<?php } ?>
评论
0赞
Dharman
3/1/2020
仅供参考,您已经使用过两次$jobs
评论