Привязка 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-запрос работал

0 ответов

Другие вопросы по тегам