我已经在这几个小时了,似乎无法得到我正在寻找的东西。以下是我要做的一个例子:
$query1=mysql_query("Select * From table1 Where name='blah'");
while($queryvalue1=mysql_fetch_array($query1)) {
$array1 = $queryvalue1['Column1']
$Options="";
$query2=mysql_query("Select * From table2 Where id In ($array1)");
while($queryvalue2=mysql_fetch_array($query2)) {
$var1 = $queryvalue2['Column2'];
$var2 = $queryvalue2['Column3'];
$Options.="<OPTION VALUE=\"$var1\">".$var2;
}
}
如果我在循环中回显$ var1和$ var2,我会得到所有合适的值,但是当我将它们包装在html标记和echo选项中时,它只给出了第一个值。我可以使用$ Options代码,如果它发生在第一个数组循环中,那就是当我在数组的数组循环中使用它时。
我的智慧结束了。有谁知道为什么会出现这个问题?有谁知道修复它的方法?任何帮助将不胜感激!
答案 0 :(得分:1)
问题可能是您在while循环中 :
$Options="";
这将重置收集的<option>
字段,这就是您只能在页面输出中看到第二个循环中的 last 条目的原因。
答案 1 :(得分:1)
除了第3行缺少的分号外,问题是你正在清除外环内的$Options
字符串。
尝试这样的事情
$options = array();
$query1=mysql_query("Select * From table1 Where name='blah'");
while($queryvalue1=mysql_fetch_array($query1)) {
$array1 = $queryvalue1['Column1'];
$query2=mysql_query("Select * From table2 Where id In ($array1)");
while($queryvalue2=mysql_fetch_array($query2)) {
$var1 = $queryvalue2['Column2'];
$var2 = $queryvalue2['Column3'];
$options[] = sprintf('<option value="%s">%s</option>',
htmlspecialchars($var1),
htmlspecialchars($var2));
}
}
$options = implode(PHP_EOL, $options);