Инструкция PDO подготовить и сопоставить в логическом режиме

Если я запустил этот простой запрос с консоли, просто набрав

SELECT COUNT(*) AS total FROM articles WHERE MATCH(title) AGAINST ('+php +mysql' IN BOOLEAN MODE) 

Я получаю много результатов. Теперь я пытаюсь подготовить это утверждение в php.

 $keywords = ['php', 'mysql']; $against = ''; for($i = 0; $i < count($keywords); $i++){ $against .= '+? '; } $query = 'SELECT COUNT(*) AS total FROM articles WHERE MATCH(title) AGAINST ('.$against.' IN BOOLEAN MODE)'; //my query is now 'SELECT COUNT(*) AS total FROM articles WHERE MATCH(title) AGAINST (+? +? IN BOOLEAN MODE)' $stmt = $pdo->prepare($query); $stmt->execute($keywords); 

Этот скрипт возвращает только результаты, если используется только 1 ключевое слово. Имея 2 ключевых слова, он не возвращает значения и не имеет ошибок (но работает в консоли). Поэтому я подозреваю, что я готов подготовить свое заявление с pdo. Есть идеи?

Вы должны просто создать заявление следующим образом:

 $query = 'SELECT COUNT(*) AS total FROM articles WHERE MATCH(title) AGAINST (:query IN BOOLEAN MODE)'; $stmt = $pdo->prepare($query); 

Затем привяжите параметры:

 $keywords = ['php', 'mysql']; $against = ''; for($i = 0; $i < count($keywords); $i++){ $against .= ' +' . $keywords[$i]; } $stmt = $pdo->prepare(array( ':query' => $against ));