2016-08-25 8 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句を使用してください。例えば

:私はSQLにINステートメントを使用することをお勧め

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

:入れ、クエリで列を使用可能にするに

<?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句でのUSING示唆人として

$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"; 

生成文字列は次のようになります。

関連する問題