【问题标题】:Loop for array created by comma separated values in mysql query fetching first result only循环由 mysql 查询中的逗号分隔值创建的数组,仅获取第一个结果
【发布时间】:2020-05-04 22:03:01
【问题描述】:

我已将一些值保存为表 1 列中的逗号分隔。

我想从表 2 中获取所有包含这些逗号分隔值的值的行。

但我当前的代码仅获取具有第一个值的一行。

表格结构如下:

表 1

id   |  faculties           | another_field
1    |  DFGHFGD1,ERTGDFGE2  | xyzxyzxyz

表 2

id   |  unique_id   | full_name
1    |  DFGHFGD1    | AAA AAA
2    |  THOGHFGD1   | BBB BBB
3    |  ERTGDFGE2   | CCC CCC
4    |  LLMNBHUH1   | DDD DDD
5    |  HGFGDHHD3   | EEE EEE
6    |  RGDJHFGN4   | FFF FFF
7    |  PLYHTGGD1   | HHH HHH

现在我想获取表 2 中 unique_id = DFGHFGD1 和 ERTGDFGE2 的两行。

我尝试了以下代码。但它只获取第一个值(DFGHGFD1)行。

 <?php 
        $faculty ="DFGHFGD1,ERTGDFGE2"; // Fetch with another query for table 1
        $var = explode(",", $faculty );
        ?>
          <ol>
           <?php
             foreach($var as  $value){
             $fquery = "select * from table_2 where unique_id = '$value'";          
             $result = $database->get_results($fquery);
                foreach($result as $data){
            ?> 
                <li><?php echo $data['full_name'];?></li>
            <?php }  ?>
          </ol>
  <?php } ?>

结果应该是这样的

  1. AAA AAA
  2. CCC CCC

但我只是得到了

  1. AAA AAA

【问题讨论】:

  • "我已将一些值保存为表 1 列中的逗号分隔。" - 大错!阅读"Is storing a delimited list in a database column really that bad?" 并规范化架构。
  • 你确定&lt;/ol&gt; 是在正确的位置,它应该在foreach() 循环之外吗?
  • @stickybit 我应该用逗号将表 1 中的值保存在单独的 mysql 表中吗?
  • @NigelRen 我改变了
    的位置并刚刚尝试但结果相同
  • @darshan:没错。

标签: php mysql


【解决方案1】:

&lt;ol&gt; 标记将在第一个 foreach 循环之外。

正确的代码是:

<?php 
$faculty ="DFGHFGD1,ERTGDFGE2";
$var = explode(",", $faculty);
?>
<ol>
<?php
foreach($var as $value) {
  $fquery = "select * from `table_2` where `unique_id` = '$value'"; 
  $result = $database->get_results($fquery);
  foreach($result as $data){ ?>
    <li><?php echo $data['full_name']; ?></li>
  <?php 
  } 
}
?></ol>

【讨论】:

  • 不鼓励使用纯代码的答案。请单击edit 并添加一些文字来解释您的代码如何解决该问题。谢谢
猜你喜欢
  • 2014-04-22
  • 2015-03-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多