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 语法有错误;检查与您的 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 语句执行没有任何错误。

4

1 回答 1

0

为什么使用DB::raw()

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

于 2020-09-17T09:47:10.320 回答