2013-02-15 1 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

+0

** mysql은 처음 실행될 때만 실행됩니다. **이 행에 대해 자세히 설명합니다. – SachinGutte

+0

'$ getactors'에'var_dump'를 실행합니다. 기대하는 배열입니까? foreach를 사용하여 두 번 이상 iterating하는 경우 문제는 where 절의 값이 일부 추가 공백을 가지며 SQL이 결과를 반환하지 않을 수 있습니다. 루프에서'$ srch3'을 에코하여 건물을 확인하십시오. – ficuscr

답변

1

explode이 필요하지 않으며 쿼리를 루프로 실행하십시오. IN 절을 사용할 수 있습니다.

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

이것은 당신의 $actors 배열 불구하고 유효한 값이있는 경우에만 작동합니다.