2016-08-25 66 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

要在查詢中使用的陣列,把數組元素作爲字符串。喜歡使用破滅或手動方式:

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

隨着人們WHERE子句中使用IN建議,你一定要與上述$字符串變量嘗試。但以簡單的方式,您可以在WHERE子句中使用OR。

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

以手動方式生成的字符串將是這樣的:

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

放在一起你「循環生成的字符串」在您的查詢字符串,你的代碼是好去。