2015-02-24 5 views
0

Допустим, запрос выглядит следующим образом:Использование и ограничения пользовательских красноречивый привязок запросов с Laravel 5

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

Мои db-> Выделяет следующие:

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

б) $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

Вам необходимо понять, что подготовленные операторы - это не только форматированные строки. Идея подготовленных операторов состоит в том, что синтаксис и аргументы отправляются отдельно, поэтому вы можете безопасно отправлять пользовательские данные, не рискуя инъекцией mysql. В запросе a) вы устанавливаете синтаксис в параметре. То же самое можно сказать и о столбцах. Имена столбцов являются частью синтаксиса.

+0

поэтому привязки должны использоваться только с подготовленными операциями? – kritop

+0

Привязки могут использоваться только в подготовленных операциях. Если вы хотите изменить столбец, вы можете сделать «select». $ ColName. ' from some_table ' –

+0

спасибо за информацию, да, я знаю, как я обычно это делаю. – kritop

Смежные вопросы