参数化查询无脂肪框架

时间:2015-09-15 15:29:52

标签: 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()提供的无效参数')

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

说实话,我认为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框架本身的例子..感谢任何帮助..

2 个答案:

答案 0 :(得分:3)

应该是

$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

答案 1 :(得分:0)

尝试

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

我在使用无脂肪食品和使用食品时遇到问题?在sql中,解决了我的问题!