2016-08-25 4 views
0
<?php 
foreach($paradise as $nepal) 
{ 
    $qry="select * from img where name='$nepal'"; 
    $ktm = mysql_query($qry); 
    while($result=mysql_fetch_assoc($ktm)) 
    { 
    ?> 
    <img src="uploads/<?php echo $result['image']; ?>" height="200px" width="200px"> 
    <?php 
    } 
} 
?> 

모든 $ paradise 배열 요소에 대한 쿼리를 실행하고 싶습니다. 이 코드는 잘 작동하지만 올바른 방법이 아닌 것으로 가정합니다. 나는 하나의 쿼리가 이것을 처리 할 수 ​​있지만 그것을 얻지는 못한다. 도와주세요!!배열 요소에 대한 쿼리 실행

+0

은'$ paradise'의 값입니다. 또한 데이터베이스에서 오는 값입니까? – catzilla

답변

0

그냥 WHERE IN 절을 사용하십시오. 예를 들어

:

select * from img where name in ('hello', 'world', 'stackoverflow'); 
1

을 나는 SQL에 IN 문을 사용하는 것이 좋습니다 : 을 코드, 그것은 다음과 같이해야한다 :

<?php 

    $names = implode("','", $paradise); 
    $query = "select * from img where name in ('{$names}');"; 
    $ktm = mysql_query($query); 
    $images = ""; 
    while($result = mysql_fetch_assoc($ktm)) { 
    $images .= '<img src="uploads/'. $result['image'].'" height="200px" width="200px">';  
    } 
    echo $images; 
?> 
0

쿼리에서 사용할 수있는 배열을하려면 넣어 배열 요소를 문자열로 반환합니다. 내파 또는 수동 방법을 사용하여 같이 : WHERE 절에서 사용하기를 추천으로

$count=0; 
Foreach ($paradise as $nepal){ 
    If($count==0){ 
     $string = $nepal; 
    }else{ 
     $string = $string.",".$nepal; 
    } 
    $count++; 
} 

, 당신은 확실히 위의 $ 문자열 변수를 시도해야합니다. 그러나 간단한 방법으로 WHERE 절에서 OR을 사용할 수 있습니다.

쿼리 문자열에 함께 당신의 '루프 생성 된 문자열을'넣어
$count=0; 
Foreach ($paradise as $nepal){ 
    If($count==0){ 
     $string = "name='".$nepal."'"; 
    }else{ 
     $string = $string." OR name='".$nepal."'"; 
    } 
    $count++; 
} 

와 코드가 갈 수 있습니다 : 같은 수동 방식으로

SELECT * FROM table WHERE name="x" OR name="y" OR name="z"; 

생성 문자열이 될 것입니다.

관련 문제