1

Laravel DB ファサードを使用して、次のクエリを実行しようとしています。

    $sql = "
        SELECT P.*, PTR.score
        FROM reviews R, products_to_reviews PTR, j_products P
        WHERE R.id = ? AND PTR.review_id = R.id AND P.id = PTR.product_id
        ORDER BY ? ?
        LIMIT ?
    ";

    $data = \DB::select($sql,[$reviewID,$orderBy,$orderByDirection,$take]);

次のエラー メッセージが表示されます。

lluminate\Database\QueryException SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。near '? を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。LIMIT 3' at line 4 (SQL: SELECT P.*, PTR.score FROM reviews R, products_to_reviews PTR, j_products P WHERE R.id = 1 AND PTR.review_id = R.id AND P.id = PTR.product_id ORDER BY PTR.score desc LIMIT 3 )

ただし、エラー内の SQL コードは、データベースに対して直接実行すると、ネイティブ クエリとして機能します。

編集:方向部分の順序に絞り込みました。私が変更した場合:

ORDER BY ? ?

ORDER BY ? DESC

SQL ステートメントはエラーなしで実行されます。

4

1 に答える 1