PHP动态SQL执行参数

时间:2017-04-22 14:03:25

标签: php sql arrays

所以我正在为一个小型搜索表单动态构建SQL statement

我有一系列IFs,我会检查用户在搜索时决定使用的过滤器。

如果用户决定使用操作系统过滤器(他选择的下拉框),我想添加

$statement->execute(array(
        ':osFilter'=>$osFilter,
        ));

如果用户选择了第二个过滤器,我需要将另一个元素添加到此array,以便它看起来像这样:

$statement->execute(array(
        ':osFilter'=>$osFilter,
        ':versionFilter'=>$versionFilter,
        ));

我认为这样做的方法是在我通过IF时创建一个数组,然后在execute()中传递它但是它不起作用。

这是我试过的代码:

 $filtersArray = array();

if (some condition) {
            array_push($filtersArray, array(
':osFilter' => $osFilter,
));
               }

我对其余的IF语句执行相同的操作,然后像这样传递构造的数组:

    $statement->execute($filtersArray);

我收到此错误:“数组转换为字符串...”

任何想法,这里做事的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您创建多维数组。只需使用$filtersArray[':osFilter'] = $osFilter;