【问题标题】:Laravel Error: SQLSTATE[HY000]: General error: 1 near "?"Laravel 错误:SQLSTATE[HY000]:一般错误:1 在“?”附近
【发布时间】:2018-09-02 16:19:13
【问题描述】:

无论我如何重组路线,我都会从函数中收到此错误: (2/2) 查询异常 SQLSTATE[HY000]: 一般错误: 1 near "?": 语法错误(SQL: select * from product order by manufacturer asc)。

我使用的代码如下:

 function get_sort($type,$sort){
       $sql = "select * from product order by ? ?";
       $products = DB::select($sql,array($type,$sort));
       return $products;
   }

请查看附上的问题图片。任何帮助将不胜感激。

【问题讨论】:

标签: laravel sql-order-by prepared-statement query-builder


【解决方案1】:

您不能在准备好的语句中绑定关键字和列。最好改用某种白名单。

   $columns = ['id', 'name', 'price'];

   $type = in_array($type, $columns) ? $type : 'name';
   $sort = $sort === 'DESC' ? 'DESC' : 'ASC';

   $sql = "select * from product order by $type $sort";

【讨论】:

    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 2012-10-24
    • 2020-05-26
    • 1970-01-01
    • 2017-10-27
    • 2018-06-18
    • 2018-07-03
    相关资源
    最近更新 更多