2017-07-27 137 views
-1

我是新来的PHP和试图解决这个问题,之前经过很多文章,但没有更好的答案。我正在使用mysqli_fetch_array($result)如何不显示MySQL行,如果该行是空的

获取sql行如果行是空的,前端会显示一个空行,这会给出奇怪的外观。应该有一些方法不要显示数据库中的空行。

我的代码

<?php 
include_once("config.php"); 
date_default_timezone_set('Asia/Kolkata'); 
//$timestamp = time(); 
$day = "" . date("D"); 
$dayt= "t" . date("D"); 
$dayr= "r" . date("D"); 
$result = mysqli_query($mysqli, "SELECT * FROM Time_table WHERE regd='". $_SESSION['TextBox1'] ."' ORDER BY id DESC"); 
     while($res = mysqli_fetch_array($result)) { 
      echo "<tr>"; 
      echo "<td style='width: 30%'>".$res[$dayt]."</td>"; 
      echo "<td style='width: 30%'>".$res[$day]."</td>"; 
      echo "<td style='width: 40%'>".$res[$dayr]."</td>"; 
      } 
     ?> 

回答

2

我建议你更改您的选择查询以排除具有空列的行。

例如:

$result = mysqli_query($mysqli, "SELECT * FROM Time_table WHERE regd='". $_SESSION['TextBox1'] ."' AND some_possibly_empty_column <> '' ORDER BY id DESC"); 

,或者如果你的列允许空值,则甚至更好:

$result = mysqli_query($mysqli, "SELECT * FROM Time_table WHERE regd='". $_SESSION['TextBox1'] ."' AND some_possibly_empty_column IS NOT NULL ORDER BY id DESC"); 
+0

我可以使用多个AND语句,例如:SELECT * FROM Time_table WHERE regd ='“。$ _SESSION ['TextBox1']。''AND $ day <>''AND $ dayt AND $ dayr;如果不是如何做到这一点? –

+0

绝对是。你可以喜欢这个'AND $ day <>''AND $ dayt <>''AND $ dayr <>''' – Yolo

0

您需要检查每个根据行数据不能为空。例如:

 while($res = mysqli_fetch_array($result)) { 
      if (!empty($res[$dayt])) { 
       echo "<tr>"; 
       echo "<td style='width: 30%'>".$res[$dayt]."</td>"; 
       echo "<td style='width: 30%'>".$res[$day]."</td>"; 
       echo "<td style='width: 40%'>".$res[$dayr]."</td>"; 
      } 
     } 

不要忘记关闭tr标签

+0

解析错误:语法错误,意外 '{' 在C:\ XAMPP \ htdocs中\ admin \ timetable.php 10行 –

+0

我做错了什么? –

+0

我的错误,对不起。我修复了代码 –

0

您也可以在您的SQL查询的WHERE语句检查空值:

SELECT * FROM table WHERE xxx != ''