如何阻止PHP回显空白标签

时间:2016-11-26 07:59:32

标签: php mysql

我有PHP代码从MySQL表调用数据。但是,当它显示数据时,我会在每个备用行上得到一个空白的<p>标记,如下所示:

 <p>Row1</p>   <p></p>   <p>Row 2</p> <p></p> <p>Row3</p>

这是我的PHP代码:

if(isset($_GET['user'])){

     $user=$_GET{'user'};

     $sql="SELECT DISTINCT `user` FROM `users` WHERE user='$user'";

     $result=mysqli_query($link, $sql);

     while ($row=mysqli_fetch_array($result)){
         echo "<p>$row[0]<p/>";
     }
}

关于可能导致这种情况的任何想法?

PS:我在函数中添加了一行echo "sql;",它出现了类似的内容

  

SELECT DISTINCT使用者FROM使用者WHERE user='John'

当我直接在没有PHP代码的数据库上运行它时,它没有空白条目就可以正常工作。所以这不是数据库问题。

任何帮助都将不胜感激。

更新

下面我粘贴了两个while循环。第一个是上面的一个,主要问题是不起作用, 第二个,我从另一个文件复制粘贴,并为此特定代码进行相应编辑。

然而,第一个while循环打印出双段标签,而第二个循环不打印。我尝试将循环单独粘贴到不同的文档中,结果是相同的,循环一给出双标签,而循环二打印单标签(应该如此)。但是,我还是看不出两个循环之间的区别。

while ($row =mysqli_fetch_array($result)) {
    echo "<p> $row[0]<p/>";
}

/*while ($row =mysqli_fetch_array($result)) {
    echo "<p> $row[0]</p>";  
}*/

基本上,我有一个解决我问题的方法,但我不明白为什么会这样做

2 个答案:

答案 0 :(得分:1)

请尝试以下代码:

if(isset($_GET['user'])){

     $user=$_GET{'user'};

     $sql="SELECT DISTINCT `user` FROM `users` WHERE user='$user' AND user <> '' ";

     $result=mysqli_query($link, $sql);

     while ($row=mysqli_fetch_array($result)){
           if(!empty($row[0]))
           {
             echo "<p>$row[0]<p/>";
           }
     }
}

答案 1 :(得分:1)

将您的查询更改为此选项,以排除空白列值

$sql="SELECT DISTINCT `user` FROM `users` WHERE user='$user' AND user <> ''";