Почему bindValue нарушает мой запрос?

В приведенном ниже коде я пытаюсь привязать теги (взятые у пользователя) к моему sql-запросу.

Я поставлю их на запрос, как этот формат: "tag1","tag2","tag3"

$tagsinput = trim($_GET["q"]);
$exploded_q = explode(",", trim($_GET["q"])); //seperate with comma, remove whitespace
$combined_tags = "\"" . implode("\",\"",$exploded_q) . "\""; //after this tags will be "tag1","tag2"...

$comb_leng = count($exploded_q);

$stmt = $db->prepare("SELECT * FROM posts a JOIN (SELECT p.id FROM tags_posts tp JOIN posts p ON tp.id_post = p.id JOIN tags t ON tp.id_tag = t.id WHERE t.name IN (:tags) GROUP BY p.id HAVING COUNT(DISTINCT t.id) = :howmany ) q ON a.id = q.id");
$stmt->bindValue(":tags", $combined_tags, PDO::PARAM_STR);
$stmt->bindValue(":howmany", count($exploded_q), PDO::PARAM_STR);
$stmt->execute();
$post_result=$stmt->fetchAll();

Если я выполню этот запрос без bindValue, он будет работать, как я и ожидал. Но если я свяжу их с bindValue()код не работает. Sql возвращает пустой результат.

0 ответов

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