我有点纠结于如何创建这个数组。
我的数据:
category_id | category_name
1 bikes
2 cars
3 books
4 computers
数组:
$category=array();
$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);
$category=array('category_id'=>$category_id, 'category_name'=>$category_name);
while ($row = $result->fetch_array()){
$category_id=$row['category_id'];
$category_name=$row['name'];
}
我想创建一个数组,这样我就可以回显单选列表中的数据,比如...
<input type='radio' value='<?PHP echo $category['category_id']; ?>'
name='category[]'><?PHP echo $category['category_name']; ?>
o bikes
o cars
o books
o computers
问题是该数组只包含一对(1,自行车),而不是所有数据。如何创建一个包含所有数据的数组?
谢谢!
发布于 2010-05-24 21:26:28
您做错了三件事,首先,您实际上没有将$category设置为等于任何值-只是将两个未定义的值的值设置为null。所以你最终得到了一个数组,如下所示:
array('category_id' => null, 'name' => null)
其次,当您设置$category_id和$category_name的值时,您没有对它们做任何操作。接下来,您不需要逐项查看数组,只需输出最初设置数组的方式--这与数组缺少维数的另一个问题有关。它应该是二维的,而不是一维的。
这段代码总结了所有的要点。我建议阅读有关数组在PHP中的工作原理以及如何定义它们的内容,它们是框架中非常常用的一种数据类型。
$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);
$categories=array();
while ($row = $result->fetch_array()){
$categories[] = array('category_id' => $row['category_id'], 'category_name' => $row['name']);
}
然后当你需要输出的时候:
foreach ( $categories as $category ) {
?>
<input type='radio' value='<?php echo $category['category_id']; ?>' name='category[]'><?php echo $category['category_name']; ?>
<?php
}
当然,这可以进一步清理。
发布于 2010-05-24 21:18:43
这是因为你只给了你第一行记录,这是在循环的另一边,你应该这样做:
$category=array();
$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);
$category=array('category_id'=>$category_id, 'category_name'=>$category_name);
while ($row = $result->fetch_array()){
$category_id=$row['category_id'];
$category_name=$row['name'];
?>
<input type='radio' value='<?PHP echo $category['category_id']; ?>'
name='category[]'><?PHP echo $category['category_name']; ?>
<?php
}
发布于 2010-05-24 21:32:30
您将赋值给变量$category_id和$category_name,而不是数组$category,因此您只能看到查询返回的第一行。
我通常使用PDO,并会写成这样:
<?php
$db = ...
$sql = 'SELECT * FROM categories ORDER BY category_name ASC';
$categories = $db->query($sql);
?>
<html>
<body>
<? foreach ($categories as $category): ?>
<input type="radio" name="category[]" value="<?= $category->category_id ?>">
<?= $category->category_name ?>
</input>
<? endforeach ?>
</body>
</html>
https://stackoverflow.com/questions/2900394
复制