Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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_Mysqli - Fatal编程技术网

Php 在一次查询中获取视频和类别

Php 在一次查询中获取视频和类别,php,mysql,mysqli,Php,Mysql,Mysqli,我有两个数据表,分别是category()和video(),如下图所示。我正在查询此图片()以获取视频及其目录。是否有一种方法可以只使用一个查询,但仍然具有与当前查询相同的结果 <?php include('config.php'); $page=intval($_REQUEST['page']); $limit=10; $start=$page*$limit - $limit; $video=mysqli_query($conn,"SELECT * FROM video ORDER BY

我有两个数据表,分别是category()和video(),如下图所示。我正在查询此图片()以获取视频及其目录。是否有一种方法可以只使用一个查询,但仍然具有与当前查询相同的结果

<?php
include('config.php');
$page=intval($_REQUEST['page']);
$limit=10;
$start=$page*$limit - $limit;
$video=mysqli_query($conn,"SELECT * FROM video ORDER BY video_id DESC LIMIT $start,$limit");
while($r_video=mysqli_fetch_assoc($video)){
    $cat_info=mysqli_query($conn,"SELECT * FROM category WHERE cat_id IN ({$r_video['video_cat']}) ORDER BY cat_sort ASC");
    while($r_cat=mysqli_fetch_assoc($cat_info)){
        $list_cat.='<a href="/category/'.$r_cat['cat_name'].'.html">'.$r_cat['cat_name'].'</a>,';
    }
    $list_cat=substr($list_cat, 0,-1);
    echo $r_video['video_name'].'<br>'.$list_cat;
    unset($list_cat);

}
?>


我建议使用左连接查询。例如,如果要获取类别1“音乐”中的所有视频,可以执行以下操作:

选择c.cat\u name、v.video\u name、v.video\u url FROM video as v LEFT JOIN category as c ON c.cat\u id=v.video\u cat,其中c.cat\u id=1

这将导致数据集包含:

cat\u name video\u name video\u url
音乐视频1 URL 1
音乐视频2 URL 24

工作小提琴:

SELECT
语句中,我们使用别名调用所需的列(请注意
AS
部分)。我们还基于一个公共列从两个表中收集数据。这是命令的
部分

LEFT JOIN关键字返回左表(表1)中的所有记录,以及右表(表2)中的匹配记录。如果没有匹配项,则结果从右侧为NULL

在PHP中,您可以使用1 while语句来迭代所有结果

希望有帮助

更新


这更像是获取标签,然后是类别,因为您可能有多个标签。请参阅:

您可以像其他人所说的那样加入查询,您面临的问题可能与一个视频可能属于多个类别有关

在本例中,我将使用一个分析函数来格式化您想要的值

我目前无法测试这一点,但查看文档后,我建议您在加入后尝试GROUP_CONCAT或CONCAT_WS,这样您就可以以最佳方式分组并返回数据

只需抓取已经建议的查询,并按照您想要的方式对它们进行分组,这样您就可以将函数应用于该组并提取值


希望有帮助。

使用
加入
。不要在查询中使用变量,参数化。在stackoverflow中显示代码。不作为图像,也不作为外部链接。链接死了,代码就丢失了。你能帮我写出来吗?非常感谢。如果你确定,“你能帮我写出来吗?”。。。见鬼?不,你有代码,你可以复制/粘贴到这里。嘘,我的视频猫不是整数,它是一串类别ID。例如:1,2是音乐和搞笑的猫。也就是说,它有不止一个类别感谢您的建议!我想这可能是我的解决办法