动态查询SQL查询中的关键字内容

时间:2015-11-30 08:59:51

标签: php mysql sql

我想在数据库中搜索条件是:

select * from table where colnam in ('1','2','3','4','5'//dynamically retrieves);

因此,如果任何字段不可用,我会得到这样的查询,例如,如果只有两个字段:

select * from table where colnam in ('1','2','','','');

但我想要像

这样的查询

select * from table where colnam('1','2');

我不想要额外的引号和逗号。

$qry="select * from table where colnam in ('$int1','$int2','$int3','$int4','$int5')";

echo $qry;

返回

select * from table where colnam in ('1','2','','','');

如果$int3$int4$int5不存在

2 个答案:

答案 0 :(得分:2)

将非空值添加到数组中,并implode将其添加到,并在IN()中使用

$vals = array();
for($i=1;$i<=5;++$i){
  if(isset(${"int".$i})) {
    $x = ${"int".$i};
    if(!empty($x))
        array_push($vals,"'".${"int".$i}."'");
  }
}

$ins = implode(",",$vals);

echo $qry="select * from table where colnam in ($ins)";

Demo

答案 1 :(得分:0)

尝试以下代码。

$val = "";
foreach ($values as $value) {


                 if($val == ''){
                     $val .= $value;
                 }
                 else{
                     $val .= ','.$value;
                 }

}

此处$ values包含动态列值('1','2','3','4','5')。

然后使用$ val变量作为条件。

我希望这段代码可以帮助你......