foreach循环中的php while循环

foreach循环中的php while循环,php,mysql,arrays,foreach,while-loop,Php,Mysql,Arrays,Foreach,While Loop,这一行$find_cond=str_replace'|','',$rem_exp;返回225和245数字 我想根据这两个身份证号码获取记录。但是下面的代码会重复返回输出 如何正确地将while循环代码放入foreach中 foreach($arr_val as $key => $val) { $c_subsubtopic = str_replace('-','_',$subsubtopic); $rem_exp = $val[$c_subsubtopic]; $fi

这一行$find_cond=str_replace'|','',$rem_exp;返回225和245数字

我想根据这两个身份证号码获取记录。但是下面的代码会重复返回输出

如何正确地将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'];
    }
}

试试这个,你就完了

在替换字符串后,您可能会在字符串中获得多个id,因此最好在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'];
    }
}

问题是,在循环的每次迭代中都要重新执行sql查询,因此会重置结果内部指针,因此会继续获取相同的数组

$res = mysql_query($sql)
在while循环之前应该在它自己的线路上,然后

while($r = msql_fetch_array($res))

这将在$res列表中正确递增。

我建议您先打印$sql并运行sql来检查结果。正如他所说。首先提取数据集。然后对其运行while语句。@初学者,您可以发布$subsubtopic中的内容吗?您在哪个基础上使用in而不是=?@RamSharma这只是一个假设,因为输出是重复的,然后我向他询问variable@Veerendra,请。不要想当然。让用户解释他的问题。@Veerendra:在我的$subtopic中,我得到了引擎描述。引擎描述是我的列名。所以,我用str_替换