Laravel错误:SQLSTATE [HY000]:一般错误:“?”附近有1

时间:2018-09-02 16:19:14

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

无论我如何重组路线,我都会不断从函数中得到此错误: (2/2)QueryException SQLSTATE [HY000]:常规错误:“?”附近的1:语法错误(SQL:按制造商asc从产品订单中选择*)。

我正在使用的代码如下:

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

请查看随附的问题图片。任何帮助将不胜感激。enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

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

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