1
全文検索クエリに問題があります。 Symfony(2.8)コントローラの内部から送信されています(重要な場合)。コードはSymfony/MySQL:特殊文字の全文検索構文エラー
// not processed text (apart from multiple spaces) from form:
$searchTerm = preg_replace('!\s+!', ' ', trim($data['query']));
// for full-text search:
$searchTermPhrase = str_replace(' ', '* ', $searchTerm) . '*';
$entityManager = $this->getDoctrine()->getManager();
// as far as I remember, query taken from StackOverflow after some tests
$statement = $entityManager->getConnection()
->prepare(
"SELECT COUNT(id) AS books_count
FROM book
WHERE
MATCH(title) AGAINST (:searchTermPhrase IN BOOLEAN MODE) > 5
AND active = true
");
$statement->execute(array('searchTermPhrase' => $searchTermPhrase));
$titlesCount = $statement->fetch();
$titlesCount = $titlesCount['books_count'];
です。ほとんどの時間。ユーザが内部いくつかの特別な文字を入れた場合でも、などの例(title)
、"title"
のために、それは失敗します。
SQLSTATE[42000]: Syntax error or access violation:
1064 syntax error, unexpected $end, expecting
FTS_TERM or FTS_NUMB or '*'
私はそれを得ることはありませんが、私はパラメータ化クエリを使用すると、自動的にそのような場合の世話をする必要があります... ?私はすべての英数字以外の文字を削除したり、問題を引き起こしているテストを終わらせたくないのですが、私はアイデアがありません。