2013-10-24 85 views
1

我需要从两个表中获取数据,一个是类别表,另一个是子类别表。 在子类别表我保存类别表的主键。现在我需要从表中排列数组。首先我想显示类别名称及其子类别,然后显示第二类别及其子类别。这是我的代码来获取类别和子类别列表。如何显示数据库中的类别和子类别

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

仅供参考,您的代码很容易受到SQL注入,它是使用过时的MySQL扩展。我建议你切换到MySQLi或PDO。如果你不这样做,至少使用'mysql_real_escape_string()'来转义$ _GET输入变量。 – ComFreek

+0

没有解决您的问题,但您应该使用MySQL PDO而不是那些弃用的mysql_函数。 – codepushr

+0

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/为什么你需要PDO和如何使用它 – csi

回答

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

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); 
+0

我已经尝试过,但没有显示所有类别。它只显示那些具有子类别的类别。我需要显示所有类别的天气,它有或没有。 – user2907907

相关问题