首页 > 解决方案 > PHP mysql while循环在foreach循环中重复

问题描述

我有一个数据结构像这样的字符串 $string = "2,3,4,5"; 我想从我的数据库中选择以获取所有 id,然后突出显示爆炸的字符串值(如果等于数据库 id)

$string = "2,3,4,5";
$exp = explode(",",$string);

foreach($exp as $e) {
    $query = $conn->query("select * from tbl");
    while($row = $query->fetch_assoc()) {

        $result .= '<option value="" ';
        if($e === $row['id']):
            $result .= ' selected';
        endif;                                      
        $result .= '>';
        $result .= $row['id'];
        $result .= '</option>';

    }
}

但我不断得到重复,如 1234678,12345678,12345678,12345678 请帮助...

标签: php

解决方案


您应该更改 foreach 和 while 的位置,例如:

$query = $conn->query("select * from tbl");
while($row = $query->fetch_assoc()) {    
    $result .= '<option value="" ';
    foreach($exp as $e) {
      if($e === $row['id']) {
        $result .= ' selected';
      }
    }                                  
    $result .= '>';
    $result .= $row['id'];
    $result .= '</option>';
}

推荐阅读