php - 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 请帮助...
解决方案
您应该更改 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>';
}
推荐阅读
- web-scraping - Puppeteer - 如何在 page.evaluate() 中使用 page.click()
- vba - 计算公式循环VBA的结果
- android - 从电话中提取 Cordova 资产
- bash - 如何在 Action 运行的 Bash 脚本中访问 GitHub Action 环境变量?
- ios - 如何使用可解码正确解码此 json 字符串?
- github - 如何从 github 中的矩阵触发单个部署挂钩?
- python - 随机数到一个字母
- makefile - GNU Make 中的条件依赖
- javascript - 如何使用 node-globaloffensive 请求PlayersProfile
- scala - 当您并不总是需要检查列表的所有元素时,如何提高 foldLeft(或 scanLeft)的性能?