![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam, muszę dodać w skrypcie sklepu który wcześniej napisałem taką opcję: administrator może zablokować odbieranie płatności od użytkowników których maile pasują do wzorca który on wprowadzi. Przykładowo: *gmail.com , *gov.pl , piter* itd... Oczywiście takich wzorców może być duużo, będą one zapisane w bazie sql. Jak najwydajniej sprawdzić czy dany email pasuje do wzorca zapisanego w bazie?
Przychodzą mi do głowy tylko małowydajne rozwiązania polegające na pobraniu wszystkich wzorców do php i zamienieniu ich na wyrażenia regularne z którymi następnie konfrontuję dany email użytkownika. Jak można to zrealizować przy użyciu tylko zapytania SQL? Czy konieczne będzie wykorzystanie regexp w mysql? Jeśli tak to czy może ktoś podesłać przykładowe zapytanie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Można o wiele prościej - operator NOT LIKE:
Powyższe zapytanie sprawdzi, czy testowy@email.pl nie pasuje do żadnej maski w tabeli. A w tabeli tabela_zakazanych_maili w kolumnie email maski zabronionych adresów: %gmail.com %gov.pl piter% Jedyne o czym trzeba pamiętać, to że MySQL używa % zamiast * - ale to można zamienić w locie w PHP podczas dodawania. W każdym razie w bazie musi być z %. Ten post edytował morbic 8.07.2011, 00:33:16 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 07:31 |