【问题标题】:PHP Display Multiple Value From One Row [duplicate]PHP从一行显示多个值[重复]
【发布时间】:2020-07-15 20:01:35
【问题描述】:

例如我有两个 MySQL 表,Category 和 Student。

---------------------
| 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.'';
}

但结果是
彼得·帕克:数学
托尼·斯塔克:语言
布鲁斯·韦恩:科学

根据表格,正确的输出是
彼得·帕克:数学、科学
托尼·斯塔克:语言、数学、科学
布鲁斯·韦恩:科学

【问题讨论】:

    标签: php arrays mysqli


    【解决方案1】:

    问题是学生中的 id_cat 表包含多个字符串中的 id。单个查询将不匹配单个元组中的所有 id。 这是解决方案;

     $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];
          }
         }
       }
    

    【讨论】:

    • 谢谢@Parth Patel.. 有没有更简单的查询让我更容易学习?
    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 2012-04-24
    • 2020-12-29
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多