首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP显示一行中的多个值

PHP显示一行中的多个值
EN

Stack Overflow用户
提问于 2020-04-03 23:40:41
回答 1查看 25关注 0票数 0

例如,我有两个表,类别和学生。

代码语言:javascript
运行
复制
---------------------
| 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       |
---------------------------------------

然后我尝试使用下面的代码行:

代码语言:javascript
运行
复制
$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.'';
}

但结果是

彼得·帕克:数学

托尼·斯塔克:语言

布鲁斯·韦恩:科学

根据表,正确的输出是

彼得·帕克:数学,科学

托尼·斯塔克:语言,数学,科学

布鲁斯·韦恩:科学

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 23:52:31

问题是您在学生中的id_cat表包含多个is,这些is在string.Single查询中将不会匹配单个元组中的所有is。这就是解决方案;

代码语言:javascript
运行
复制
 $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];
      }
     }
   }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61015468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档