Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> znak "%" wpływa na długość wykonywania skryptu
dloogi
post 12.12.2013, 09:39:03
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 30.09.2010
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Witam,

Mam formularz, gdzie w textarea wrzucam listę kodów, które należy dopisać do bazy.
Skrypt wrzuca kody do tabeli php, usuwa spacje, sprawdza czy nie ma niedozwolonych znaków, ponieważ wrzucam te kody potem do bazy.
Następnie dla każdego kodu z listy sprawdzam, czy był już bazie, jak nie to dopisuje jak już był dopisuje do tabeli dubli.

Do tej pory chodziło to dość sprawnie.
Dziś miałem pierwszy raz kody, które zaczynały się od znaku "%". Skrypt zamiast kilkunastu sekund, wykonuje się kilka minut. Gdy usuwam rozpoczynający znak "%" śmiga szybko. Próbowałem zakomentować funkcję sprawdzającą znaki przed wrzuceniem do bazy, ale nie pomogło.
Kody przekazuje POST-em.

Go to the top of the page
+Quote Post
nospor
post 12.12.2013, 09:45:57
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesli w bazie sprawdzasz kody przy pomocy LIKE to znak % jest znakiem specjalnym wykorzystywanym przez like, wiec zapewne dlatego ci muli smile.gif
Kody powinienes sprawdzac nie przez LIKE a przez = gdyz zapewne szukasz dokladnie takiego kodu a nie podobnego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Damonsson
post 12.12.2013, 09:47:51
Post #3





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Możesz jeszcze escapować %, poprzez "\" lub inny dowolny znak.

  1. WHERE kolumna LIKE '50\%'


jak nie zadziała, to jeszcze tak:

  1. WHERE kolumna LIKE '50|%' ESCAPE '|'


Ten post edytował Damonsson 12.12.2013, 09:50:31
Go to the top of the page
+Quote Post
dloogi
post 12.12.2013, 12:18:29
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 30.09.2010
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 12.12.2013, 09:45:57 ) *
Jesli w bazie sprawdzasz kody przy pomocy LIKE to znak % jest znakiem specjalnym wykorzystywanym przez like, wiec zapewne dlatego ci muli smile.gif
Kody powinienes sprawdzac nie przez LIKE a przez = gdyz zapewne szukasz dokladnie takiego kodu a nie podobnego

Dokładnie o to chodziło. Idzie jak błyskawica.
Dzięki za podpowiedzi!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 12:28