2016-04-14 83 views
0

我有以下while循环,这是我用来创建一个下拉列表中选择含有日期取出从数据库:While循环打印附加空行

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result)) { 
    echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 
} 

while循环打印的附加空行到降列表,即列表中出现空行。我怎样才能避免这种情况?

+1

小边注:如果该值与显示的文本相同,您可以省略'value'属性 - 它将默认显示文本。 ''将产生“约翰史密斯”作为它的价值。 –

+0

投票结束 - 数据库中有一个“NULL”或“empty”记录。 – skrilled

+1

停止使用MySQL,[开始使用MySQLi](http://stackoverflow.com/questions/12020227/updating-from-mysql-to-mysqli)。你将活着享受变化:-) – Martin

回答

1

此代码中没有内容会打印空白选项。你确定你的数据库中没有记录名称为空或空的记录吗?

尝试增加

WHERE name IS NOT NULL and name != "" 

到您的查询

0

听起来像是你有你的结果从数据库中的空行。您可以检查人员表,或者你可以通过执行类似下面的修复它的代码:这样

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result)) { 
    if (!empty($row['name'])) { 
     echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 

    } 
} 
+1

这将仍然打印一个空的选项,因为isset()将返回true,因为该值可能是一个空字符串。您应该使用!empty()代替 –

+0

Doh没有注意。更新。 – Codar

0

只需使用PHP空函数:

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
    while ($row = mysql_fetch_array($result)) { 
     if(!empty($row['name'])) 
     { 
      echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 
     } 
}