Laravel 5 自定义 Eloquent 查询绑定的使用和限制

Usage and limitations of custom Eloquent query bindings with Laravel 5

假设查询如下所示:

$query = 'select * from some_table LIMIT :limit'

我的 db->selects 如下:

a) $orders = $db->select($db->raw($query), array("limit" => '0,10'));

b) $orders = $db->select($db->raw($query), array("limit" => '10'));

a) 不起作用,但 b) 起作用。为什么?

这也行不通:

$query2 = 'select :col from some_table LIMIT :limit';
$orders = $db->select($db->raw($query2), array("col" => "some_col","limit" => '10'));

我是不是用错了?

您需要意识到准备好的语句不仅仅是格式化的字符串。准备好的语句的想法是语法和参数是分开发送的,因此您可以安全地发送用户数据而不会冒 mysql 注入的风险。在查询 a) 中,您将语法放入参数中。关于列也可以这样说。列名是语法的一部分。