php MySQL while foreach循环内的循环重复

时间:2019-01-15 05:13:51

标签: php

我有一个具有这样数据结构的字符串 $ string =“ 2,3,4,5”; 我想从数据库中进行选择以获取所有ID,然后突出显示与数据库ID相等的爆炸字符串值

...
Info info = new Info();
info.setDescription(descriptionWithMultilines);
info.setIntructions(instructionsWithMultilines);

Yaml yaml = new Yaml();
String yamlString = yaml.dumpAs(info, Tag.MAP, DumperOptions.FlowStyle.BLOCK);
...

但是我继续得到像 1234678,12345678,12345678,12345678请帮助...

4 个答案:

答案 0 :(得分:0)

不确定要执行的操作,请尝试以下代码。在您的代码中,您正在for循环中运行数据库查询,这对性能造成了影响。

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

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

        $result .= '>';
        $result .= $row['id'];
        $result .= '</option>';

    }

答案 1 :(得分:0)

您应该更改foreach的位置,而就像这样:

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

答案 2 :(得分:0)

您的逻辑绝对正确,但是您将循环放置在错误的位置。

因为foreach每次都在运行,并且每次都在SQL查询中,并且每次都返回第一行,并且foreach每次都匹配并打印相同的结果。如此简单,您需要将SQL查询移出foreach并像下面

一样运行它
$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>';
}

您肯定会获得所需的输出。谢谢

答案 3 :(得分:0)

看起来您想标记ID用户已选中。我将执行以下两个步骤:

  • 获取所有ID
  • 检查是否选择了每个ID
$query = $con->query("select id from config");
$datas = [];
$result = '';
while($row = $query->fetch_assoc()) {    
    $result .= '<option value="'.$row['id'].'" ';
    if(in_array($row['id'], $exp))
    {
        $result .= ' selected';
    }                                 
    $result .= '>';
    $result .= $row['id'];
    $result .= '</option>';
}
echo $result;

结果如下:

<option value="1"  selected>1</option><option value="2"  selected>2</option>