RedBeanPHP:Find中的值不起作用

时间:2013-02-25 17:01:26

标签: php orm redbean

我使用下面的示例在我的表中对结果进行排序,但orderby变量似乎不会影响结果的顺序。我无法访问底层的SQL查询以查看RedBean正在做什么,我已经检查过,$ sortorder和$ sort是正确的值。

$needles = R::find('needle',
    ' haystack = :haystack ORDER BY :sortorder :sort', 
        array( 
            ':sort' => $sort
            ':sortorder'=>$sortorder, 
            ':haystack'=>$haystack 
        )
    );

2 个答案:

答案 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
    )
);