while循环打印空白<option> </option>

时间:2014-07-21 23:09:37

标签: php html forms mysqli

我有一个功能可以生成下拉<select> <option> s

的内容
<select>
    <option></option>
    <option name="the-correct-display">The Correct Display</option>
    <option></option>
    <option name="the-correct-display">The Correct Display</option>
    <option></option>
</select>

为什么我得到空白的任何想法?这是功能:

function catalogGetColors($mysqli)
{
    $query = 'SELECT sectionName FROM sections';
    if($result = $mysqli->query($query)){
        while($row = $result->fetch_array(MYSQLI_BOTH)){
            $optName = strstr(strtolower(str_replace(' ', '-', $row['pName'])), '-', true);
            printf('<option name="%s">%s<option>', $optName, $row['pName']);
        }
    } else {
        printf('Something went wrong.');
    }
}

这是一个内部使用的原型构建,因此我不担心预备语句或PDO(还)。

1 个答案:

答案 0 :(得分:1)

From the manual:

  

通过使用MYSQLI_ASSOC常量,此函数的行为与mysqli_fetch_assoc()相同,而MYSQLI_NUM的行为与mysqli_fetch_row()函数相同。最后一个选项MYSQLI_BOTH将创建一个具有两者属性的单个数组。

基本上通过使用MYSQLI_BOTH,您的输出结果将以关联格式与数字索引一起返回,从而导致重复结果,这可能是您获得空值的原因。

您应该在此使用MYSQLI_ASSOC

while($row = $result->fetch_array(MYSQLI_ASSOC)){