Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 从3个不同的mysql表中选择数据_Php_Mysql_Json_Database - Fatal编程技术网

Php 从3个不同的mysql表中选择数据

Php 从3个不同的mysql表中选择数据,php,mysql,json,database,Php,Mysql,Json,Database,我有3个表,我试图通过从每个表中输入一些特定的数据来获得一个最终的表。各表如下: 第一个表称为tbl_类别,如下所示: +------+---------------+----------------+ | cid | category_name | category_image | +------+---------------+----------------+ | 1 | cars | 1.jpg | +------+--------------

我有3个表,我试图通过从每个表中输入一些特定的数据来获得一个最终的表。各表如下:

第一个表称为tbl_类别,如下所示:

+------+---------------+----------------+
| cid  | category_name | category_image |
+------+---------------+----------------+
| 1    | cars          |  1.jpg         |
+------+---------------+----------------+
第二张名为tbl_wallpaper的表格如下:

+------+---------------+----------------+-----------+
| id   | cat_id        | scat_name      | image     |
+------+---------------+----------------+-----------+
| 33   | 1             |  blue cars     | 001.png   |
+------+---------------+----------------+-----------+
+------+---------------+
| scid |scategory_name |
+------+---------------+
| 1    | blue cars     |
+------+---------------+
第三个表名为tbl_scategory,如下所示:

+------+---------------+----------------+-----------+
| id   | cat_id        | scat_name      | image     |
+------+---------------+----------------+-----------+
| 33   | 1             |  blue cars     | 001.png   |
+------+---------------+----------------+-----------+
+------+---------------+
| scid |scategory_name |
+------+---------------+
| 1    | blue cars     |
+------+---------------+
我想达到的目标是得到这样的东西

"HD_WALLPAPER": [
    {
        "cid": "1",
        "scat_name": "blue cars",
        "category_name": "cars",
        "category_image": "1.jpg",
        "category_image_thumb": "001.png",
        "total_wallpaper": "1"
    },
表示数据来自表tbl_分类tbl_墙纸tbl_分类。我正在尝试获取存储在表中的壁纸总数tbl\u scategory(tbl\u类别的子类别)

我使用这个代码,但它带来了整个墙纸栏

if(isset($_GET['cat_list']))
{
    $jsonObj= array();
    $cat_order=API_CAT_ORDER_BY;
    $query="SELECT tbl_category.cid, tbl_category.category_name, tbl_category.category_image, tbl_scategory.scid, tbl_wallpaper.scat_name FROM tbl_category ,
    tbl_scategory, tbl_wallpaper
    ORDER BY tbl_category.".$cat_order."";
    $sql = mysqli_query($mysqli,$query)or die(mysql_error());


    while($data = mysqli_fetch_assoc($sql))
    {
        //Wallpaper count
        $query_wall = "SELECT COUNT(*) as num FROM tbl_wallpaper WHERE scat_name='".$data['cid']."'";
        $total_wall = mysqli_fetch_array(mysqli_query($mysqli,$query_wall));
        $total_wall = $total_wall['num'];   
        $row['cid'] = $data['cid'];
        $row['scat_name'] = $data['scat_name'];
        $row['category_name'] = $data['category_name'];
        $row['category_image'] = $file_path.'images/'.$data['category_image'];
        $row['category_image_thumb'] = $file_path.'images/thumbs/'.$data['category_image'];

        $row['total_wallpaper'] = $total_wall;


        array_push($jsonObj,$row);

    }

    $set['HD_WALLPAPER'] = $jsonObj;

    header( 'Content-Type: application/json; charset=utf-8' );
    echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
    die();
}
我不知道是什么问题

NB:tables是更多的行,我只是将这些部分放在示例中

试试这个:

SELECT t1.cid, t1.category_name, t1.category_image, t2.scat_name, t2.image
FROM tbl_category AS t1, tbl_wallpaper AS t2, tbl_scategory AS t3
WHERE t1.id = t2.cat_id
AND t2.scat_name = t3.scategory_name
我希望它能解决你的问题

试试这个:

SELECT t1.cid, t1.category_name, t1.category_image, t2.scat_name, t2.image
FROM tbl_category AS t1, tbl_wallpaper AS t2, tbl_scategory AS t3
WHERE t1.id = t2.cat_id
AND t2.scat_name = t3.scategory_name

我希望它能解决您的问题

如果您有共同的关系,请使用
JOIN
internal JOIN
来连接所有三个表。此外,您还需要在tbl_scategory和其他表之间建立关系。使用联接并明确给出条件,以获得正确的结果我尝试了联接,但我无法获得结果,我被困在我将与Wallper表联接的内容上,因为它只有一个共同的scat_名称。任何人都可以编写这部分代码。如果您有共同的关系,请使用
JOIN
internal JOIN
来联接这三个表。此外,您还需要在tbl_scategory和其他表之间建立关系。使用联接并明确给出条件,以获得正确的结果我尝试了联接,但我无法获得结果,我被困在我将与Wallper表联接的内容上,因为它只有一个共同的scat_名称。任何人都可以写这部分代码。不幸的是,我没有给出任何结果,但在你的
mysql shell
phpmyadmin
中执行它。不幸的是,我没有给出任何结果,但在你的
mysql shell
phpmyadmin