Chcę pobrać z bazy rekord, który ma w kategorii łańcuch zawierający sekwencję ".+a+." więc w zapytaniu SQL po REGEXP stosuję klucz '(\.\+a\+\.)'. Jeśli jedyny rekord w tabeli ma w polu 'kategoria' łańcuch ".+aaa+.", który nie zawiera łańcucha ".+a+." to nie powinno mi pobrać żadnego rekordu. Mimo to pobiera mi właśnie ten rekord.
Dla pewności porównałem ten sam klucz '(\.\+a\+\.)' z tym samym łańcuchem ".+aaa+." w funkcji preg_match() i w tym przypadku wszystko jest ok, czyli funkcja zwraca false bo ".+a+." nie pasuje do klucza '(\.\+a\+\.)'.
Więc moje pytanie jest następujące: czemu SQL i PHP ten sam łańcuch inaczej porównało z tym samym kluczem? może gdzieś mam błąd? oto kod:
<?php $kropki="../"; include_once($kropki.'system/pliki/funkcje.php'); $con=polaczZBaza("quizy"); ?>
jeśli po REGEXP damy klucz '(\.\+aa\+\.)' lub '(\.\+aaa\+\.)' to także pobiera ten rekord. Przy '(\.\+aaaa\+\.)' już tego nie robi. Wygląda to tak jak by ignorowało końcówkę "\.\+" i początek "\+\." klucza.
Edit: dałem klucz '(\\\.\\\+aaa\\\+\\\.)' i zdaje się, że działa, więc wychodzi na to, że po REGEXP trzeba podać klucz z dodatkowymi backslashami a w funkcji preg_match() nie.