Привязка PDO умножает строки, используя bindParam() и условие IN()
Проблема в том, что я не получаю ответа, когда пытаюсь передать переменную, связанную в запрос (хранится в переменной $searchString
).
Переменная $searchString = 'extreme', 'water'
Мой оператор PDO/MySQL:
$sql = "SELECT *
FROM posts
INNER JOIN post_tags ON posts.id = post_tags.postid
INNER JOIN tags ON post_tags.tagid = tags.id
WHERE tags.tag IN ( :searchTags )
AND posts.suspended = 0
GROUP BY posts.id";
$results = $db->prepare($sql);
$results->bindParam(':searchTags', $searchString);
$results->execute();
while ($row = $results->fetch()) {
echo $row[0]; // Should be the first column which is "id"
}
Ожидаемый результат: 1
(в моей базе данных есть только один элемент, который соответствует запросу, и его идентификатор равен 1)
Я подозреваю, что функция bindParam() портит значение $searchString
как если бы я удалил строку bindParam() и поместил переменную непосредственно в SQL-запрос, он работает следующим образом:
$sql = "SELECT * FROM posts INNER JOIN post_tags ON posts.id = post_tags.postid INNER JOIN tags ON post_tags.tagid = tags.id WHERE tags.tag IN ({$searchString}) AND posts.suspended = 0 GROUP BY posts.id";
Примечание: переменная $searchString
должны иметь одинарные кавычки '
чтобы SQL-запрос работал