php - 如果 mySQL 行为空,if else 语句不返回任何值?
问题描述
我正在创建一个带有评论系统的博客文章页面的社交媒体网络应用程序。在特定帖子上,我可以根据帖子 ID 显示数据库中的所有行。但是,如果没有与帖子 ID 相关的行,我想显示“无评论”的内容。如果没有行,我似乎无法弄清楚返回的内容。
//Check if there are comments related to post via post id
function comment_exists($post_id, $conn){
$sql = "SELECT * FROM post_comments WHERE post_id='$post_id'";
$result = $conn->query($sql);
if(mysqli_num_rows($result) >= 1){
return true;
}else{
return false;
}
}
////////////////////////////////////////////////////////////
$post_id = $_GET['id'];
$sql = $conn->query("SELECT * FROM post_comments WHERE post_id = '$post_id' ORDER BY id DESC");
while($row = $sql->fetch_object()){
$comments[] = $row;
}
foreach($comments as $comment){
if(comment_exists($post_id, $conn)){
?>
<li class="list-group-item">
<div class="h6 m-0">@<?php echo "$comment->username" ?></div>
<div class="text-muted"> <i class="fa fa-clock-o mr-1"></i><?php echo "$comment->comment_time" ?></div>
<p class="card-text"><?php echo "$comment->comment" ?></p>
</li>
<?php
}else{
echo 'No comments yet';
}
}
我有 2 篇文章,一篇有 $post_id=14 有 0 条评论,一篇有 $post_id=21 有 4 条评论。
对于 post_id=21,它按预期显示 4 条评论。对于 post_id=14,它显示一个空页面,而不是 else 语句中的“还没有评论”
解决方案
只需检查是否$comments
为空。您不需要每次都检查循环,因为如果没有注释,循环将不会运行。
if (empty($comments)) {
echo "No comments yet";
} else {
foreach ($comments as $comment) {
?>
<li class="list-group-item">
<div class="h6 m-0">@<?php echo "$comment->username" ?></div>
<div class="text-muted"> <i class="fa fa-clock-o mr-1"></i><?php echo "$comment->comment_time" ?></div>
<p class="card-text"><?php echo "$comment->comment" ?></p>
</li>
<?php
}
}
推荐阅读
- python-3.x - Django Queryset 而不是 view.py 中的 for 循环和 if 语句
- php - 在文件顶部添加带有 php simplexml 的新子节点
- python-3.x - 如何让 Tensorflow 使用更多的 RAM?
- c++ - 监视剪贴板更改 c++ 适用于所有应用程序 (Windows)
- c - 在不使用 strstr 的情况下从文件中提取包含字符串的行到另一个文件中
- c# - 尝试分配类时.Net转换错误CS0029和CS0266
- ruby-on-rails - 为什么此登录表单失败且没有错误?
- json - 如何将完整的 json 数据映射到我的代码中?现在我一次只能做一个条目
- java - 如何使用 Selenium RemoteWebDriver 设置 HTTP_PROXY?
- javascript - 如何检测由 Enter 按键触发的浏览器中的鼠标点击?