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は、SQLインジェクションを(とりわけ)防止するのに最適なPDOパラメーターバインディングに依存しています。

PHPでのPDOパラメーターバインディングの制限についての説明は次のとおり です。ORDERBY句でパラメーターをバインドしないと結果が順序付けられないのはなぜですか。

于 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 に答える