Php Laravel 5自定义雄辩查询绑定的用法和限制

Php Laravel 5自定义雄辩查询绑定的用法和限制,php,mysql,laravel,eloquent,laravel-5,Php,Mysql,Laravel,Eloquent,Laravel 5,假设查询如下所示: $query = 'select * from some_table LIMIT :limit' 我的数据库->选择如下: a) $orders=$db->select($db->raw($query),数组(“limit”=>“0,10”) b) $orders=$db->select($db->raw($query),数组(“limit”=>“10”) a) 不起作用,但b)起作用。为什么? 此外,这也不起作用: $query2 = 'select :col from

假设查询如下所示:

$query = 'select * from some_table LIMIT :limit'
我的数据库->选择如下:

a)
$orders=$db->select($db->raw($query),数组(“limit”=>“0,10”)

b)
$orders=$db->select($db->raw($query),数组(“limit”=>“10”)

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

此外,这也不起作用:

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

我用错了吗?

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

因此绑定只能用于准备好的语句?绑定只能用于准备好的语句。如果要修改列,可以执行“选择”。$colName.“从某些表中”操作,只有当数据来自用户时,使用绑定才有用。如果要在数据库中插入他的名字,可以使用“插入到用户(名称)值(:name)”中。这样你就不用担心在他的输入中转义引号了。