使用 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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '? 附近使用的正确语法。LIMIT 3' 在第 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 语句执行没有任何错误。