Php 在一次查询中获取视频和类别
我有两个数据表,分别是category()和video(),如下图所示。我正在查询此图片()以获取视频及其目录。是否有一种方法可以只使用一个查询,但仍然具有与当前查询相同的结果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
<?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是音乐和搞笑的猫。也就是说,它有不止一个类别感谢您的建议!我想这可能是我的解决办法