我需要从两个表中获取数据,一个是类别表,第二个是子类别表。 在子类别表中,我保存了类别表的主键。现在我需要从表中fecth数组。首先,我想显示类别名称及其子类别,然后显示第二个类别及其子类别。这是获取类别和子类别列表的代码。
include("admin/common/connection.php");
$userId= $_GET['user'];
if(isset($userId))
{
$select="select category_name,id from tbl_category where user_id='".$userId."'";
$query= mysql_query($select);
$var= array();
while($fetch_row= mysql_fetch_array($query))
{
$cat_dish= $fetch_row['category_name'];
$var['category'] = $cat_dish;
$select_dish="select dish_photo,printer_location,printer_list,kitchen_display from tbl_category_dish where user_id='".$userId."' and cat_id='".$fetch_row['id']."'";
$query_dish= mysql_query($select_dish);
while($row= mysql_fetch_array($query_dish))
{
$var['dish_photo']= $row['dish_photo'];
$var['printer_location']= $row['printer_location'];
}
}
print_r($var);
}
答案 0 :(得分:0)
我相信你要找的是一个JOIN声明。以下语句将替换您的两个查询,而只是使用此查询。
SELECT cd.dish_photo,cd.printer_location,cd.printer_list,cd.kitchen_display,
cat.category_name, cat.id
FROM tbl_category_dish AS cd
LEFT JOIN tbl_category AS cat ON cd.cat_id = cat.id
WHERE cd.user_id = '".$userId."'
这些项目也可以帮助您学习和发展您的技能 1)如上所述,试试PDO to prevent SQL injection 2)检查数据库表的设置。了解database relations。
答案 1 :(得分:0)
不评论您方法中的不安全感但回答问题,您可以在一个查询中执行此操作
$sql="select
a.category_name,
a.id,
b.dish_photo,
b.printer_location,
b.printer_list,
b.kitchen_display
from tbl_category a,
tbl_category_dish
where user_id='" . $userid . "'
and b.cat_id=a.id";
while($row=mysql_fetch_array($sql)){
if(!isset($var[$row["category_name"]])){
$var[$row["category_name"]]=array();
}
$var[$row["category_name"]][]=$row;
}
print_r($var);