如何从数据库

时间:2016-10-20 04:33:21

标签: php mysqli html-select

我正在尝试在表单中获取要从数据库列填充的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>               

5 个答案:

答案 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>