我有一个具有这样数据结构的字符串 $ 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请帮助...
答案 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用户已选中。我将执行以下两个步骤:
$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>