运行数组元素的查询

时间:2016-08-25 02:56:52

标签: php mysql

<?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数组元素运行查询。这段代码工作正常,但我认为这不是一个正确的方法。我知道单个查询可以处理这个,但我不明白。帮帮我!!

3 个答案:

答案 0 :(得分: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;
?>

答案 1 :(得分:0)

只需使用WHERE IN子句。

例如:

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

答案 2 :(得分:0)

要使数组在查询中可用,请将数组元素作为字符串。喜欢使用IMPLODE或手动方式:

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

当人们建议在WHERE子句中使用IN时,你一定要用上面的$ string变量来尝试它。但是以简单的方式,您可以在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++;
}

将“循环生成的字符串”放在查询字符串中,您的代码就可以了。