2013-02-15 177 views
0

**回答..逗號後有空格。感謝大家!php循環mysql只執行一次

當我執行下面的代碼時,會顯示所有的$ castmember,但mysql只在第一個上運行。

$getactors=explode(",", $actors); 
    foreach($getactors as $castmember){ 

    $idolid=""; 
    $srch3= "SELECT `id`,`dir` FROM `idols` WHERE `name`='$castmember'"; 
    $result5 = mysql_query($srch3); 
    while ($row5 = mysql_fetch_assoc($result5)) { 
    $idolid = $row5["id"]; 
    $idoldir= $row5["dir"]; 
    } 

    if($idolid){ echo"<li style=\"font-size:1.2em;\" ><a href=\"/gallery/$idolid/$idoldir.html\" title=\"$castmember\" itemprop=\"actors\"> $castmember</a>"; 
    } else { 
    echo"<li style=\"font-size:1.2em;\"><div style=\"display:inline\" itemprop=\"actors\"> $castmember</div>"; 
    } 
    echo"<span></span></li>\n"; 
    } 
+1

那麼問題是什麼? – fedorqui 2013-02-15 19:50:58

+0

** mysql只運行在第一個。**更詳細地解釋這一行。 – SachinGutte 2013-02-15 19:52:58

+0

在'$ getactors'上做'var_dump',它是你期望的數組嗎?如果它使用foreach迭代多次,那麼問題可能是where子句中的值有一些額外的空格,並且SQL不返回任何結果。可以在循環中回顯'$ srch3'來查看你的建築物。 – ficuscr 2013-02-15 19:55:18

回答

1

您不需要explode然後在循環中運行查詢。您可以使用IN子句。

$srch3= "SELECT `id`,`dir` FROM `idols` WHERE `name` IN ('".$actors."')"; 

這將工作僅當您$actors陣列具有有效值雖然。