我对如何创建这个数组有点困惑。
我的数据:
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,自行车),而不是所有数据。 如何制作包含所有数据的数组?
谢谢!
答案 0 :(得分:3)
你做错了三件事,首先你实际上并没有将$ 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
}
这当然可以进一步清理。
答案 1 :(得分:2)
那是因为你只是通过给你第一行记录(如自行车)来回显那里的循环,你应该这样做:
$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
}
答案 2 :(得分:1)
您要分配变量$ 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>