Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP动态SQL执行参数_Php_Sql_Arrays - Fatal编程技术网

PHP动态SQL执行参数

PHP动态SQL执行参数,php,sql,arrays,Php,Sql,Arrays,因此,我正在为一个小型搜索表单动态构建一个SQL语句 我有一系列的IFs,检查用户在搜索时决定使用的过滤器 如果用户决定使用操作系统过滤器(他从中选择的下拉框),我想添加 $statement->execute(array( ':osFilter'=>$osFilter, )); 如果用户选择了第二个过滤器,我需要向该数组添加另一个元素,使其看起来像这样: $statement->execute(array( ':osFilte

因此,我正在为一个小型搜索表单动态构建一个
SQL语句

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

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

$statement->execute(array(
        ':osFilter'=>$osFilter,
        ));
如果用户选择了第二个过滤器,我需要向该
数组添加另一个元素,使其看起来像这样:

$statement->execute(array(
        ':osFilter'=>$osFilter,
        ':versionFilter'=>$versionFilter,
        ));
    $statement->execute($filtersArray);
我认为这样做的方法是在我遍历IFs时创建一个数组,然后将它传入execute(),但它不起作用

这就是我尝试的代码:

 $filtersArray = array();

if (some condition) {
            array_push($filtersArray, array(
':osFilter' => $osFilter,
));
               }
我对其余的IF语句执行相同的操作,然后按如下方式传递构造的数组:

$statement->execute(array(
        ':osFilter'=>$osFilter,
        ':versionFilter'=>$versionFilter,
        ));
    $statement->execute($filtersArray);
我收到以下错误:“数组到字符串的转换…”


有什么想法吗,在这里做事情的正确方式是什么

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

我几分钟前找到了答案,但既然你先发布了,我就接受了。我犯了一个多么简单的错误,但我从未想过使用push()将不起作用。无论如何谢谢你!