参数化查询 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 中使用 ?
时遇到问题。这解决了我的问题!
我在使用多个参数的 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 中使用 ?
时遇到问题。这解决了我的问题!