2016-08-25 2 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 array. Этот код работает отлично, но я полагаю, что это не правильный способ. Я знаю, что один запрос может справиться с этим, но я не понимаю. Помоги мне!!текущий запрос для элементов массива

+0

- это значения '$ paradise', также поступающие из базы данных? – catzilla

ответ

0

Просто используйте предложение WHERE IN.

Например:

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

Я предлагаю использовать IN заявление SQL: В своем коде, это должно быть так:

<?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++; 
} 

Как люди предполагая, используя IN в ИНЕКЕ, вы должны обязательно попробовать его с переменными $ строки выше. Но простым способом вы можете использовать OR в WHERE.

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++; 
} 

Соединенных вашей «петли генерируется строка» в строке запроса, и ваш код хорошо идти.

Смежные вопросы