Правильный формат для запросов PDO и MySQL IN / NOT IN - PullRequest
2 голосов
/ 15 августа 2011

По причинам, которые должны быть очевидны, это поиск убийства ...

Как мне сделать это в PDO:

SELECT thing FROM things WHERE thing_uid IN ( ... )

Мой конкретный случай использования - это построенная строкавзорвав массив, взятый из формы с несколькими десятками флажков.В стандартном MySQL это очень просто ...

$thingString = implode("', '", $thingArray);
$q = "SELECT thing FROM things WHERE thing_uid IN ('$thingString')";

, но я хочу получить выгоду от защиты от инъекций PDO ... связанные параметры и все такое.Так как я могу это сделать?

1 Ответ

6 голосов
/ 15 августа 2011

Создайте массив из ?, равный вашим значениям, и добавьте его в запрос.

$placeholders = array_fill(0, count($thingArray), '?');
$sql = "SELECT thing FROM things WHERE thing_uid IN (" . implode(',', $placeholders) . ")";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...