簡體   English   中英

PHP的while循環內foreach循環

[英]php while loop inside a foreach 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'];
    }
}

問題是您要在循環的每次迭代中重做sql查詢,從而重置結果內部指針,因此您將繼續獲取同一數組。

$res = mysql_query($sql)

在while循環之前應該在它自己的行上,然后

while($r = msql_fetch_array($res))

這將在$ res列表中正確增加。

試試這個,你就完成了

由於替換后可能會在字符串中獲得多個id,因此最好使用IN子句

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM