Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示数据库中的类别和子类别_Php_Mysql - Fatal编程技术网

Php 如何显示数据库中的类别和子类别

Php 如何显示数据库中的类别和子类别,php,mysql,Php,Mysql,我需要从两个表中获取数据,一个是类别表,另一个是子类别表。 在子类别表中,我正在保存类别表的主键。现在我需要从表中提取数组。首先我想显示类别名称及其子类别,然后是第二个类别及其子类别。这是我获取类别和子类别列表的代码 include("admin/common/connection.php"); $userId= $_GET['user']; if(isset($userId)) { $select="select category_name,id from tbl_category whe

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

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

}

我相信你要找的是加入声明。下面的语句将替换您的两个查询,而只使用这一个

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) 如上所述,请尝试。

2) 检查数据库表的设置。了解。

不评论方法中的不安全性,而是回答问题,您可以在一个查询中完成此操作

$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);

仅供参考,您的代码易受SQL注入攻击,并且使用了不推荐使用的MySQL扩展。我建议您切换到MySQLi或PDO。如果不这样做,至少使用
mysql\u real\u escape\u string()
来转义$\u GET输入变量。这并不能解决您的问题,但您应该使用mysql PDO,而不是那些不推荐使用的mysql\u函数。为什么需要PDO以及如何使用itok谢谢,我会在我的代码中更改它。但是你能告诉我我在获取类别和子类别数组时做错了什么吗?我已经试过了,但它并没有显示所有的类别。它只显示那些有子类别的类别。我需要显示所有类别它是否有子类别。