我在 MySQL 数据库中有一个名为“位置”的字段 - 它仅向北、南、东、西提供服务。
我使用这段代码只得到了 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';
}
但我担心我的方法行不通 - 遗憾的是,我是菜鸟,无法找出问题所在!
谢谢
最佳答案
mysql_fetch_array
只会(引用手册,强调我的):
Fetch a result row as an associative array, a numeric array, or both
因此,您必须多次调用此函数——实际上,每行一次(因此,此处为 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_ASSOC
为每一行获取关联数组:我认为以这种方式工作更容易。 - 在
while
循环体中,您可以使用$row
关联数组,按列名索引。
作为旁注,在某些 HTML 代码中注入(inject)数据(例如字符串)时,您应该正确地转义输出,以避免 HTML 注入(inject)。
有关解决方案,请参阅 htmlspecialchars
功能。
关于php - 从 mysql_fetch_array 查询创建一个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120043/