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 ステートメントはエラーなしで実行されます。