如果没有评论php mysqli,显示“成为评论帖子的第一个”消息

时间:2017-10-29 14:57:54

标签: php mysqli

我这里有代码,但似乎无法使其正常工作。如果没有人发布对该用户帖子的评论,我想显示“成为第一个发表评论”的消息。我的代码如下:

<?php 
                            $comment_query = mysqli_query($con,"SELECT * ,UNIX_TIMESTAMP() - date_posted AS TimeSpent FROM comment LEFT JOIN users on users.id = comment.user_id where post_id = '$id'") or die (mysqli_error());
                            while ($comment_row=mysqli_fetch_array($comment_query)){
                            $comment_id = $comment_row['comment_id'];
                            $comment_by = $comment_row['name'];
                            if($id == $id && $comment_row['content']=""){
                                $beFirst = "Be the first to comment";
                            } else {
                                $beFirst = $comment_row['content'];
                            }
                        ?>
                <br><img src='<?= $user_form_img; ?>' height=24px width=24px align=left style="display:inline-block"/><p style="padding-left:24px;"><a href="#"><?php echo $comment_by; ?></a><br/><font style=font-size:18px;><?php echo $comment_row['content']; ?><?= $beFirst; ?>
                </font><br>
                        <?php               
                            $days = floor($comment_row['TimeSpent'] / (60 * 60 * 24));
                            $remainder = $comment_row['TimeSpent'] % (60 * 60 * 24);
                            $hours = floor($remainder / (60 * 60));
                            $remainder = $remainder % (60 * 60);
                            $minutes = floor($remainder / 60);
                            $seconds = $remainder % 60;
                            if($days > 0)
                            echo date('F d, Y - H:i:sa', $comment_row['date_posted']);
                            elseif($days == 0 && $hours == 0 && $minutes == 0)
                            echo "A few seconds ago";       
                            elseif($days == 0 && $hours == 0)
                            echo $minutes.' minutes ago';
                        ?>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要替换此支票:

if($id == $id && $comment_row['content']=""){

if ($comment_row['content'] == '') {

因为使用$comment_row['content']="",所以为变量分配一个空值,在这种情况下,布尔值将为false$id == $id始终为true

因此if($id == $id && $comment_row['content']=""){将被解释为if (true && false),并且始终为false

最好将变量$beFirst命名为$commentMsg。因为主要值将是注释的文本而不是默认文本(“成为第一个评论”)。或者只是不创建变量并使用三元运算符:

<?= ($comment_row['content'] == '') ? "Be the first to comment" : $comment_row['content'] ?>

另外,我强烈建议使用PHP PDO prepared statements来阻止SQL注入。