此行$find_cond = str_replace('|',' ',$rem_exp);
返回225和245的数字。
我想根据这两个id号获取记录。但是下面的代码重复返回输出。
如何将while循环代码正确放入foreach?
foreach($arr_val as $key => $val)
{
$c_subsubtopic = str_replace('-','_',$subsubtopic);
$rem_exp = $val[$c_subsubtopic];
$find_cond = str_replace('|',' ',$rem_exp);
$sql = "SELECT a.item_id, a.item_name, a.item_url, b.value_url, b.value_name, b.value_id FROM ".TBL_CARSPEC_ITEMS." a, ".TBL_CARSPEC_VALUES." b WHERE a.item_id = b.item_id AND a.item_url = '".$subsubtopic."' AND value_id = '".$find_cond."' AND a.status = '1'";
while($r = mysql_fetch_array(mysql_query($sql)))
{
echo $r['value_name'];
}
}
答案 0 :(得分:0)
问题是你在循环的每次迭代中重做sql查询,从而重置结果内部指针,所以你继续获取相同的数组。
$res = mysql_query($sql)
应该在while循环之前在它自己的行上,然后
while($r = msql_fetch_array($res))
这将通过$ res列表正确递增。
答案 1 :(得分:-1)
试试这个,你就完成了
正如你所获得的那样,在替换它之后可能会在字符串中获得多个id,因此最好使用IN where子句
foreach($arr_val as $key => $val)
{
$c_subsubtopic = str_replace('-','_',$subsubtopic);
$rem_exp = $val[$c_subsubtopic];
$find_cond = str_replace('|',',',$rem_exp);
$sql = "SELECT a.item_id, a.item_name, a.item_url, b.value_url, b.value_name, b.value_id FROM ".TBL_CARSPEC_ITEMS." a, ".TBL_CARSPEC_VALUES." b WHERE a.item_id = b.item_id AND a.item_url = '".$subsubtopic."' AND value_id IN('".$find_cond."') AND a.status = '1'";
while($r = mysql_fetch_array(mysql_query($sql)))
{
echo $r['value_name'];
}
}