Php 在和WHERE中,以字符串或数组形式传入变量

Php 在和WHERE中,以字符串或数组形式传入变量,php,mysql,Php,Mysql,我有一个查询,它有一个where条件,有时条件可以是字符串,有时条件可以是数组。如果它是我需要在中使用的数组 该条件作为变量传入 最佳解决方案是什么: 检查传入的变量是否为数组-如果不是,则将其放入数组中。然后始终运行IN搜索 更改运行的SQL,因此如果它是数组,则运行IN搜索,如果不执行WHERE搜索 在我看来。。。我认为最好的解决方案是第一条:检查是否是一个数组,如果不是,转换它。然后在一个“in”小条款中内爆。第二个将生成更多代码。只需将其转换为数组。如果有必要,Mysql会重写您的查询本

我有一个查询,它有一个where条件,有时条件可以是字符串,有时条件可以是数组。如果它是我需要在中使用的数组

该条件作为变量传入

最佳解决方案是什么:

  • 检查传入的变量是否为数组-如果不是,则将其放入数组中。然后始终运行IN搜索

  • 更改运行的SQL,因此如果它是数组,则运行IN搜索,如果不执行WHERE搜索


  • 在我看来。。。我认为最好的解决方案是第一条:检查是否是一个数组,如果不是,转换它。然后在一个“in”小条款中内爆。第二个将生成更多代码。

    只需将其转换为数组。如果有必要,Mysql会重写您的查询本身,而无需输入

    $var = array('test');
    $sql = "SELECT * FROM `table` WHERE `id` " ? is_array($var) ? "IN (" . implode(',',$var) . ")" : " = " . $var;
    
    或者干脆做:

    $var = array('test');
    if(!is_array($var)){
        $var = array($var);
    }
    $sql = "SELECT * FROM `table` WHERE `id` IN (" . implode(',',$var) . ")";
    

    随便你喜欢哪个。就性能而言,我会选择第一个。

    In
    Where
    子句中,它们不是排他性的。你的意思是
    =
    中的
    。第1版。看起来容易些。