让我们说查询如下所示:
$query = 'select * from some_table LIMIT :limit'
我的db->选择如下:
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'));
我是以错误的方式使用它吗?
答案 0 :(得分:0)
您需要意识到准备好的语句不仅仅是格式化的字符串。准备语句的想法是语法和参数是单独发送的,因此您可以安全地发送用户数据而不会冒险注入mysql。在查询a)中,您将语法放在参数中。关于列,也可以这样说。列名是语法的一部分。