Я использую объект PDO в PHP для выполнения запросов MYSQL, и у меня, похоже, возникла проблема с использованием предложения IN () с PDO :: Prepare ().Пользовательский ввод: теги, разделенные запятойпр) баскетбол, футболЯ кодирую следующее:
$query =
"SELECT s.item_id, s.item_type, s.title
FROM search_all s
WHERE EXISTS (
SELECT t.item_id
FROM tags t
WHERE t.item_id = s.item_id AND t.item_type = s.item_type
AND t.tag IN (:tags)
)";
$mysql_vars[':tags'] = implode("','",explode(',',$tags));
$stmt = $connection->prepare($query);
$stmt->execute($vars);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Из того, что я понимаю, execute () будет заключать каждую переменную в двойные кавычки ("), поэтому я вручную добавляю двойные кавычки между каждым вводом, чтобы имитировать sql как:
SELECT s.item_id, s.item_type, s.title
FROM search_all s
WHERE EXISTS (
SELECT t.item_id
FROM tags t
WHERE t.item_id = s.item_id AND t.item_type = s.item_type
AND t.tag IN ("basketball","football")
)
Это не работает для меня, однако. Есть ли способ по-прежнему использовать PDO prepare () и execute () при использовании предложения sql IN ()?