glem1337
@glem1337

Как в PDO применить одновременно именованную и не именованную переменную?

Если я подставляю в строку запроса переменные, то все естественно работает, но с точки зрения безопасности это не правильно:
//Так всё работает
$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);


В общем никак не могу найти способ сделать одновременно и то, и другое. Подскажите, пожалуйста, каким образом это можно реализовать?
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы