Если я подставляю в строку запроса переменные, то все естественно работает, но с точки зрения безопасности это не правильно:
//Так всё работает
$brand = implode(',',$brand);
$sql = "SELECT * FROM models WHERE category_id=$cat_id AND brand_id IN ($brand)";
$stmt = $pdo->prepare($sql);
$stmt->execute();
Если же я пытаюсь подставить именованную и не именованную переменную , то сразу выдает ошибки:
//Так ошибки
$in = str_repeat('?,', count($brand) - 1) . '?';
$sql = "SELECT * FROM models WHERE category_id= :cat_id AND brand_id IN ($in)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array('cat_id'=>$cat_id, $brand));
При этом если я вместо :cat_id поставлю переменную напрямую, то работает, почти то что надо, но все же не то:
$in = str_repeat('?,', count($brand) - 1) . '?';
$sql = "SELECT * FROM models WHERE category_id=$cat_id AND brand_id IN ($in)";
$stmt = $pdo->prepare($sql);
$stmt->execute($brand);
В общем никак не могу найти способ сделать одновременно и то, и другое. Подскажите, пожалуйста, каким образом это можно реализовать?