Экранирование метасимволов в REGEXP

Drakon

Новичок
Экранирование метасимволов в REGEXP

Как экранировать мета-символы в SQL-запросе с использованием REGEXP?
Я делаю поиск по каталогу. Там если в запросе ввести "?", то в REGEXP получается REGEXP "?"
И MySQL выдаёт ошибку. Если экранировать знак вопроса, например с помощью preg_quote, то тоже ошибка.

В обоих случаях:
Error number: 1139
Got error 'repetition-operator operand invalid' from regexp

MySQL 4.1.10a
 

Drakon

Новичок
Такс... Тогда вопрос по части PHP... Как экранивароть строку, чтобы её туда подставить?

Гляньте, правильно-ли?

PHP:
$str = get_magic_quotes_gpc() ? stripslashes($_POST['find']) : $_POST['find'];
$replace = array( "'" => "\\'", "\\" => "\\\\" );
$str = str_replace(array_keys($replace), array_values($replace), preg_quote($str));
$where = "WHERE value REGEXP CONVERT( _utf8 '$str' USING cp1251 ) COLLATE cp1251_general_ci 
";
Т. е. тут получается нужно двойное экранирование бэкслэша?
 
Сверху