我正在尝试在表单中获取要从数据库列填充的HTML SELECT字段。我可以很好地读取列,并可以使用fprint或echo查看结果。问题是,我似乎无法使基于列的数组在SELECT字段中显示为选择。我能够使用下拉选择器生成一个字段,但不会填充值。如何将Array中的值转换为HTML SELECT / OPTION字段? 这是我正在使用的代码的一个子集:
<?php
$link = new mysqli("localhost","USER","PASSWORD", "DATABASE");
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if (!$link->set_charset("utf8"))
{
printf("Error loading character set utf8: %s\n", $link->error);
exit();
}
$role_sql = "SELECT role FROM lu_role";
$role_result = mysqli_query($link, $role_sql);
$options = "";
while($row1 = mysqli_fetch_array($role_result))
{
$options = $options."<option>$row1[1]</option>";
}
//Using the following to validate that I can get the query results in an array.
while ($row = $role_result->fetch_assoc())
{
printf($row["role"]);
}
?>
<form action="post.php" method="post">
<table class="table_600_reg">
<tr>
<td width="120">Father</td>
<td width="200" align="left">
<select>
<?php echo $options;?>
</select>
答案 0 :(得分:1)
您可以在显示字段时检查索引。在您的查询中,您只指定了要返回的字段:
SELECT role FROM lu_role
所以索引应该以&#39; 0&#39;不是&#39; 1&#39;。
$options = $options."<option>$row1[0]</option>";
您也可以使用&#39; mysqli_fetch_assoc&#39;所以你可以使用$ row1 [&#39; role&#39;]而不是依赖索引。
答案 1 :(得分:0)
您在value=""
$options = $options."<option value='VALUE_HERE'>$row1[1]</option>";
由于您只选择了一列,因此应该$row1[0]
而不是$row1[1]
答案 2 :(得分:0)
试试这个:
$options = "";
while($row1 = mysqli_fetch_array($role_result))
{
$options .= "<option value='".$row1['role']."'>$row1['role']</option>";
}
然后你可以使用
<select>
<option value="">Select one</option>
<?php echo $options;?>
</select>
答案 3 :(得分:0)
我个人会引用关联数组值而不是索引值。如果您后来决定要从该表中提取更多结果来操纵其他数据,则索引可能会发生变化。
while ($row = $role_result->fetch_assoc()) {
$options .= "<option value='{$row['role']}'>{$row['role']}</option>";
}
答案 4 :(得分:-1)
您需要将while语句放在选择标记
中这是代码
<select>
<?php
while($row1 = mysqli_fetch_array($role_result))
{
$options = $options."<option>$row1[1]</option>";
echo '$options';
}
?>
</select>