Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 参数化查询无脂肪框架_Php_Mysql_Fat Free Framework - Fatal编程技术网

Php 参数化查询无脂肪框架

Php 参数化查询无脂肪框架,php,mysql,fat-free-framework,Php,Mysql,Fat Free Framework,我在使用多个参数在无脂肪框架中构造查询时遇到问题 $result = $db -> exec( array('SELECT * FROM table WHERE table.type = ?', ' OR table.type = ?'), array($id[0],$id[1])); 我得到这个错误: 为foreach()提供的参数无效 [Z:/web/SITE/lib/base.php:2015]base->错误(500,“为foreach()提供的参数无效

我在使用多个参数在无脂肪框架中构造查询时遇到问题

    $result = $db -> exec( array('SELECT * 
        FROM table WHERE table.type = ?', ' OR table.type = ?'), array($id[0],$id[1]));
我得到这个错误: 为foreach()提供的参数无效

[Z:/web/SITE/lib/base.php:2015]base->错误(500,“为foreach()提供的参数无效”)

当我直接在db上测试查询时,它会工作,所以这不是问题所在

老实说,我看不出代码有什么不同:

编辑各种不起作用的选项:

$result = $db -> exec( array('SELECT * 
            FROM table WHERE table.type = ? OR table.type = ?'), array($id[0],$id[1]));

$result = $db -> exec( array('SELECT * 
            FROM table WHERE table.type = ?', ' OR table.type = ?' ,$id[0],$id[1]);
这是来自无脂肪框架本身的例子。。非常感谢您的帮助。

应该是

$result = $db -> exec(
  'SELECT * FROM table WHERE table.type = ? OR table.type = ?', 
  array(1=>$id[0],2=>$id[1])
);
当第一个参数是数组时,它将转换为一个事务,其中$commands和$args中的每个数组值用于单个查询

试试看

$result = $db -> exec(
  'SELECT * FROM table WHERE table.type = :typeOne OR table.type = :typeTwo', 
  array(':name'=>$id[0],':typeTwo'=>$id[1])
);

我有一个问题与脂肪免费和使用?在sql中,这解决了我的问题

第二个示例有三个不同的查询。第一个有一个,以某种方式分为两部分。将其替换为类似于
$db->exec的内容('SELECT*fromtable WHERE table.type=?或table.type=?',$id)。参数正常,删除数组我需要数组,因为我不知道用户将选择多少类型。我可以在循环中向字符串添加OR,但我甚至不能使其与硬编码参数一起工作@好的,谢谢。一开始我没有注意到,但是在一个字符串中它也不起作用。这是我首先测试的..仍然不走运“PDOStatement::bindValue():SQLSTATE[HY093]:无效参数编号:列/参数基于1”
$result = $db -> exec(
  'SELECT * FROM table WHERE table.type = :typeOne OR table.type = :typeTwo', 
  array(':name'=>$id[0],':typeTwo'=>$id[1])
);