-Justyna-
2.06.2012, 17:48:59
Zamiasta kilka-kilkadziesiąt razy używac OR chciałam użyc funkcji array, ale nie dział mi to poprawnie. Pod spodem mój kod
'slowo1',
'slowo2',
);
$zap = "DELETE FROM tabela WHERE kontakt LIKE '%$array%' OR email='$array' ";
konrados
2.06.2012, 17:58:06
Zainteresuj się REGEXP, przykład:
SELECT * from tabela where kontakt REGEXP '$vars';
-Justyna-
2.06.2012, 18:06:00
Otrzymałam błąd :
Parse error: syntax error, unexpected T_VARIABLE
w linijce SELECT * from tabela where kontakt REGEXP '$vars';
konrados
2.06.2012, 18:08:50
A Ty to tak po prostu skopiowałaś? No to zapytanie musisz wrzucić przecież do funk. mysql_query
mysql_query("DELETE FROM tabela where kontakt REGEXP '$vars' OR email REGEXP '$vars' ");
Edit: brakowało średnika.
-Justyna-
2.06.2012, 18:14:28
Uzywam $wykonaj = mysql_query($zap);
tak wiec moja funkcja OK.
Domyśliłam sie ze brakuje srednika, dodalam go i skrypt dobrze się wykonal, ale strasznie długo mielił zanim się wykonał. Czy to jest optymalny sposób?
konrados
2.06.2012, 18:16:52
A ile Ty masz tam rekordów?
Może pomoże założenie indeksów na 'kontakt' i 'email'.
-Justyna-
2.06.2012, 18:24:07
Rekordów jest kilkanaście tysiecy.
Skrypt działa poprawnie poza faktem, że zamula i obciąża serwer. Czy można użyc optymalniejszej funkcji?
konrados
2.06.2012, 18:28:39
No optymalniejsze jest chyba jednak użycie OR i zwykłego = lub like (wyrażenia regularne zapewne zajmują więcej czasu).
Miało być wygodnie a nie wydajnie:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.