1

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

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

2 回答 2

2

参数绑定用于值,order-by 子句使用列和 SQL 语句。

RedBeanPHP 依赖于 PDO 参数绑定,这对于(除其他外)防止 SQL 注入非常有用。

这里是关于 PHP 中 PDO 参数绑定限制的讨论: 为什么 ORDER BY 子句中的绑定参数不对结果进行排序?

于 2013-03-02T17:22:09.450 回答
1

但是,您可以在之前轻松准备查询字符串:

$query = sprintf('ORDER BY %s %s LIMIT :size', $column, $sortOrder);

$items = R::find(
    'item',
    $query,
    array(
        'size' => (int) $size
    )
);
于 2014-01-11T06:56:19.907 回答