Php 从mysql\u fetch\u数组查询创建表单

Php 从mysql\u fetch\u数组查询创建表单,php,mysql,forms,fetch,Php,Mysql,Forms,Fetch,我在MySQL数据库中有一个名为“location”的字段,它只服务于北、南、东、西 我使用这段代码只得到了4个不同的结果: $query_form = "SELECT DISTINCT location FROM hotel ORDER BY location ASC"; $result_form = mysqli_query($dbc, $query_form) or die('die query error'); $row_form = mysql_fetch_array($result_

我在MySQL数据库中有一个名为“location”的字段,它只服务于北、南、东、西

我使用这段代码只得到了4个不同的结果:

$query_form = "SELECT DISTINCT location FROM hotel ORDER BY location ASC";
$result_form = mysqli_query($dbc, $query_form) or die('die query error');
$row_form = mysql_fetch_array($result_form, MYSQLI_NUM);
我想使用此查询的四个结果填充一个表,以便:

<option value='1'>North</option>
<option value='2'>South</option>
<option value='3'>East</option>
<option value='4'>West</option>
北
南方
东边
西部
我用过这个:

foreach ($row_form['location'] as $k => $v) {
    echo '<option value="' . $k . '">' . $v . '</option>\n';
    }
foreach($row_form['location']作为$k=>v){
回显“”。$v。“\n”;
}
但我担心我的方法行不通——遗憾的是,我是一个笨蛋,无法找出哪里出了问题

谢谢

只会(引用手册,强调我的):

获取结果行作为 关联数组、数字数组或 两者

所以,您必须多次调用这个函数——实际上,每行调用一次(这里是4次)


这通常是通过循环来完成的,在得到结果时循环。
在您的情况下,您可能希望使用如下所示的内容:

$lineCounter = 1;
while ($row = mysql_fetch_array($result_form, MYSQL_ASSOC)) {
    // Use your row, here.
    // For instance : $row['location']
    // And you can use the $lineCounter variable, to keep track of the current line number.
    $lineCounter++;
}
注:

  • 我使用了
    MYSQL\u ASSOC
    ,为每一行获取一个关联数组:我认为这样做更容易
  • while
    循环的主体中,可以使用
    $row
    关联数组,按列名索引

作为旁注,在某些HTML代码中注入数据(如字符串)时,应该正确地转义输出,以避免HTML注入


有关解决方案,请参阅函数。

MYSQLI\u NUM实际返回带有数字索引的字段。根据您的要求,我相信,拥有
并没有什么帮助。

[查看此链接了解MYSQLI_NUM的实际功能:MYSQLI_NUM的意思和作用是什么

现在,在您的代码中,您需要修改如下:

$i=1;
while ($row_form=mysql_fetch_array($result_form, MYSQLI_NUM)) {
    echo '<option value="' . $i . '">' . $row_form['location'] . '</option>\n';
    $i++;
}
$i=1;
而($row\u form=mysql\u fetch\u array($result\u form,MYSQLI\u NUM)){
回显“”。$row_表单['location']。\n';
$i++;
}
EDIT:正如这里的另一个答案所指出的,您确实需要一个循环构造来从数据库中检索每一行。一个
mysql\u fetch\u数组(…)
只会给您一行。您需要在循环中迭代,直到函数返回一个有效行

检查函数的工作方式:

使用
mysql\u fetch\u assoc();
或更改为
mysql\u fetch\u数组($result\u form,mysql\u assoc);