我正在尝试使用客户名称数组填充HTML选择列表。我使用以下代码,但它似乎不起作用。我有一个查询SQL Server数据库并获取名称的函数。我知道在其他代码中使用它时工作正常,出于某种原因,当我尝试填充选择列表时,它会显示为空白。使用for
循环会更好或更有效吗?实现这一目标的最佳方法是什么?
<select name="customers">
<?php
$custNames = getCustomers();
foreach($custNames as $customers){
echo '<option value="' . $customers . '">' . $customers . '</option>';
}
?>
</select>
答案 0 :(得分:3)
您是否尝试过print_r()
或var_dump()
$custNames
。你的foreach循环没有任何问题,因此getCustomers()
函数很可能返回一个非数组或一个空数组。
当然,要非常小心地插入文本。任何客户名称中的单引号都会影响您的表格:
<option value="John "The Unknown" Doe">John "The Unknown" Doe</option>
至少将值部分传递给htmlspecialchars()
以使其更安全一些。
答案 1 :(得分:0)
如果foreach
返回一个数组(或者更具体地说是一个实现getCustomers()
接口的对象),Traversable
循环就完全没了问题。您可能希望执行var_dump( $custNames );
来检查您拥有的实际上是数组,否则您可能希望更改getCustomers()
函数以返回数组。