例如,我有两个表,类别和学生。
---------------------
| id_cat | name_cat |
----------------------
| 1 | language |
| 2 | math |
| 3 | science |
---------------------
---------------------------------------
| id_student | name_student | id_cat |
---------------------------------------
| 1 | Peter Parker | 2, 3 |
| 2 | Tony Stark | 1, 2, 3 |
| 3 | Bruce Wayne | 3 |
---------------------------------------
然后我尝试使用下面的代码行:
$check=mysqli_query($conn, "SELECT * FROM student LEFT OUTER JOIN category ON student .id_cat = category.id_cat ORDER BY id_student ASC");
while($data=mysqli_fetch_array($check)){
$namestudent = $data['name_student'];
$namecat = $data['name_cat'];
echo ''.$namestudent.' : '.$namecat.'';
}
但结果是
彼得·帕克:数学
托尼·斯塔克:语言
布鲁斯·韦恩:科学
根据表,正确的输出是
彼得·帕克:数学,科学
托尼·斯塔克:语言,数学,科学
布鲁斯·韦恩:科学
发布于 2020-04-03 23:52:31
问题是您在学生中的id_cat表包含多个is,这些is在string.Single查询中将不会匹配单个元组中的所有is。这就是解决方案;
$check=mysqli_query($conn, "SELECT * FROM student");
while($data=mysqli_fetch_array($check))
{
$namestudent = $data['name_student'];
$namecat = $data['name_cat'];
$checking=explode(',',$data['id_cat']) =>this is give [0]=2,[1]=3,So on.....
for($i=0;$i=count($checking);$i++)
{
$check1=mysqli_query($conn, "SELECT * FROM category where id_cat='$checking[$i]'");
while($result=mysqli_fetch_array($check))
{
echo $result['name_category];
}
}
}
https://stackoverflow.com/questions/61015468
复制相似问题