dloogi
12.12.2013, 09:39:03
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.
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

Kody powinienes sprawdzac nie przez LIKE a przez = gdyz zapewne szukasz dokladnie takiego kodu a nie podobnego
Damonsson
12.12.2013, 09:47:51
Możesz jeszcze escapować %, poprzez "\" lub inny dowolny znak.
WHERE kolumna LIKE '50\%'
jak nie zadziała, to jeszcze tak:
WHERE kolumna LIKE '50|%' ESCAPE '|'
dloogi
12.12.2013, 12:18:29
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

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!