<?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 :(得分: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++;
}
将“循环生成的字符串”放在查询字符串中,您的代码就可以了。