通过

命名参数绑定的Laravel原始SQL查询命名参数绑定“order by”在此完整原始语句上不起作用。不显示错误消息。开始和长度的工作。通过

$sql = "SELECT 

product.id AS 'product-id',

product.name AS 'product-name',

product.status AS 'product-status',

product.ingredients 'product-ingredients',

product.price AS 'product-price',

category.name AS 'category-name'

FROM

product

LEFT JOIN

category ON product.category_id = category.id

ORDER BY :orderBy

LIMIT :start,:length";

return DB::select($sql, [

'orderBy' => $orderBy,

'start' => $start,

'length' => $length

]);

有什么想法吗?

回答:

问题出在底层的PDO语句中。您不能像绑定值那样在查询中绑定表名或列名。看到这个答案:

Can PHP PDO Statements accept the table or column name as parameter?

你可以重写查询,而不生表达式:

return DB::table('product') 

->select([

product.id AS 'product-id',

...

])->leftJoin('category', 'product.category_id', '=', 'category.id')

->orderBy($orderBy)

->limit($start, $length)

如果必须使用原始表达式,你将不得不手动值消毒顺序并将其插入到查询为一个字符串。

以上是 通过 的全部内容, 来源链接: utcz.com/qa/259015.html

回到顶部