Возникли некоторые проблемы с выполнением запроса PDO LIKE, содержащего ().
<?php
...
$text_with_parentheses = '%'.$text_with_parentheses.'%'
$sth = $dbh->prepare('SELECT * FROM '.$table.' WHERE alarm LIKE :alarm');
$sth->bindParam(':alarm' , $text_with_parentheses);
$sth->execute();
$response = $sth->fetch();
...
?>
Строковое значение, которое я запрашиваю, представляет собой текст предупреждения, хранящийся в столбце varchar utf8_uncode_ci. Это выглядит так:
'ABCD. Статус ABCD (6): (сбой)'
Кажется, я не могу понять, как избежать круглых скобок. Протестировано как через PHP/PDO, так и напрямую в консоли MYSQL. Для тестирования я проверил следующее непосредственно в консоли MYSQL.
SELECT * FROM `table` WHERE `column`='ABCD. Status ABCD (6): (fail)'
Он возвращает 0 результатов.
Единственный способ получить какие-либо результаты - как в PDO, так и в консоли MYSQL - это сделать:
SELECT * FROM `table` WHERE `column` LIKE 'ABCD. status ABCD%'
Но это возвращает несколько значений, которые нежизнеспособны. При поиске значений, не содержащих круглых скобок, все работает нормально.
У кого-нибудь есть идеи? Это похоже на проблему с MYSQL.