参数化查询 Fat Free 框架

Parameterized Query Fat Free Framework

我在使用多个参数的 fat free 框架中构建查询时遇到问题。

    $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->error(500,'Invalid argument supplied for foreach()')

当我直接在数据库上测试时查询有效,所以这不是问题。

老实说,我看不出与显示的代码有任何区别 here :

$db->exec(
    array(
        'DELETE FROM diet WHERE food=:name',
        'INSERT INTO diet (food) VALUES (?)',
        'SELECT * FROM diet'
    ),
    array(
        array(':name'=>'cola'),
        array(1=>'carrot'),
        NULL
    )
);

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

$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]);

这是 Fat free 框架本身的示例。感谢任何帮助。

应该是

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

当第一个参数是一个数组时,它将转换为一个事务,其中来自 $commands 和 $args 的每个数组值用于单个查询。 http://fatfreeframework.com/sql#Transaction

尝试

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

我在使用 Fat Free 和在 sql 中使用 ? 时遇到问题。这解决了我的问题!