我使用下面的示例在我的表中对结果进行排序,但orderby变量似乎不会影响结果的顺序。我无法访问底层的SQL查询以查看RedBean正在做什么,我已经检查过,$ sortorder和$ sort是正确的值。
$needles = R::find('needle',
' haystack = :haystack ORDER BY :sortorder :sort',
array(
':sort' => $sort
':sortorder'=>$sortorder,
':haystack'=>$haystack
)
);
答案 0 :(得分:1)
参数绑定用于值,order-by子句使用列和SQL语句。
RedBeanPHP依赖于PDO参数绑定,这对于阻止SQL注入(以及其他事情)非常有用。
以下是关于PHP中PDO参数绑定限制的讨论: Why doesn't binding parameter in ORDER BY clause order the results?
答案 1 :(得分:1)
但是,您可以在以下情况之前轻松准备查询字符串:
$query = sprintf('ORDER BY %s %s LIMIT :size', $column, $sortOrder);
$items = R::find(
'item',
$query,
array(
'size' => (int) $size
)
);