Ошибки регулярных выражений в MySQL (такое же регулярное выражение работает в PHP)

Я работаю над функцией поиска, чтобы вводить пользователя и искать поля mysql. Идея состоит в том, чтобы разделить слова, которые пользователь ищет, и искать каждый термин в соответствующем поле.

Код, используемый для создания регулярного выражения, который я использую, был скопирован из работающего чистого PHP-скрипта (регулярное выражение, похоже, отлично работает с PHP, поэтому я подозреваю, что это разница в регулярном выражении)

Простите меня, если это очевидная проблема, все еще чувствуя регулярное выражение.

Сначала я покажу вам запросы, которые я запускаю, и ошибки, которые я получаю

"SELECT * from `images` WHERE ( `name` REGEXP '^(?=.*gallardo).*$' OR `meta` REGEXP '^(?=.*gallardo).*$' ) ORDER BY `changestamp` DESC 

Получил ошибку «операнд-оператор повторения-оператора недействителен» из regexp »

 SELECT * from `images` WHERE ( `name` REGEXP '^(?=.*gallardo)(?=.*lambo).*$' OR `meta` REGEXP '^(?=.*gallardo)(?=.*lambo).*$' ) ORDER BY `changestamp` DESC 

дает ту же ошибку

чтобы скомпилировать это регулярное выражение, я беру пользовательский ввод как «gallardo lambo» и запускаю эту процедуру PHP

 if(isset($_GET['keyword'])){ $searchterms = explode(' ',$_GET['keyword']); $regstr = '^'; foreach($searchterms as $i => $v) { if($v) $regstr .= '(?=.*'.preg_replace('/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/', "\\$&", $v).')'; } $regstr .= '.*$'; } 

то я помещаю это в запрос как

 "( `name` REGEXP '$regstr' OR `meta` REGEXP '$regstr' )" 

Когда я использую этот метод с preg_match() php, он работает.

Любое понимание? Не стесняйтесь сказать мне, что я понятия не имею, что я делаю.

Благодаря!

Регулярное выражение MySQL более ограничено, чем PHP – они не поддерживают обратные ссылки или обратные ссылки. См. Руководство .

Вместо этого вы можете искать полнотекстовый поиск .