如果 mysqli_fetch_assoc 为空,则显示一些 html,而循环 php [duplicate]

Display some html if mysqli_fetch_assoc is empty while loop php [duplicate]

提问人: 提问时间:3/1/2020 最后编辑:Dharman 更新时间:11/10/2022 访问量:897

问:

我用来从数据库中获取数据,我想显示,就像没有找到任何结果一样,结果为空或空。我试过用类似的东西:那行不通。 有效,但如果不显示工作(如果可用)。while loopif/elseif (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 } ?>
php mysql 循环 mysqli while 循环

评论


答:

1赞 Bär Ger 3/1/2020 #1

在开始循环之前,您必须进行验证以检查是否找到任何结果。假设是 返回的实例。$jobsmysqli_resultmysqli_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