【问题标题】:While loop print additional empty lineWhile 循环打印额外的空行
【发布时间】:2016-08-06 07:21:15
【问题描述】:

我有以下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 循环在下拉列表中打印一个额外的空行,即列表中出现一个空行。我怎样才能避免这种情况?

【问题讨论】:

  • 次要旁注:如果值与显示的文本相同,您可以省略value 属性-它将默认为显示的文本。 &lt;option&gt;John Smith&lt;/option&gt; 将产生“John Smith”作为其值。
  • 投票关闭 - 您的数据库中有 NULLempty 记录。
  • 停止使用 MySQL,start using MySQLi 。你会活着享受变化:-)

标签: php mysql while-loop


【解决方案1】:

听起来您的数据库结果中有空行。您可以为此检查人员表,也可以通过执行以下操作在代码中修复它:

$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>";

    }
}

【讨论】:

  • 这仍然会打印一个空选项,因为 isset() 将返回 true,因为该值可能是一个空字符串。你应该使用 !empty() 来代替
  • Doh 没注意。已更新。
【解决方案2】:

只需像这样使用 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>";
        }
}

【讨论】:

    【解决方案3】:

    此代码中的任何内容都不会打印空选项。您确定您的数据库中没有名称为 NULL 或空的记录吗?

    尝试添加

    WHERE name IS NOT NULL and name != ""
    

    到您的查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多