php在foreach循环中循环

时间:2014-08-26 12:54:39

标签: php mysql arrays foreach while-loop

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

2 个答案:

答案 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'];
    }
}