$result = $conn->query("SELECT * FROM users WHERE username LIKE '%$search%' ");
benim sorum yukarıda işlemi eğer $search bir dizi olsaydı nasıl yapardık? Yani ben username'in içinde 'gök' geçenleri ya da 'ah' geçenleri ya da 'meh' geçenleri bulmak istesem?
... username LIKE '%$search[0]%' OR username LIKE '%$search[1]%' OR username LIKE '%$search[2]%'
tamolarak sorumu anlatamamışım galiba... ben o diziyi örnek vermiştim.. peki dizi 100 elemanlı olsa 100 tane or mu yazmalıyız? bunun en verimli çözümü nedir?
Cezve'nin dediği yöntemi for döngüsü kurarak yapabilirisin:
$stmt = "SELECT * FROM users WHERE username LIKE "; $ebat = count($search); for($i=0; $i<$ebat; $i++){ $stmt = $stmt."\"".$search[$i]."\""; if($i == $ebat-1) //son elemana geldiysek... break; $stmt = $stmt." OR username LIKE "; }
Denemedim ama çalışır sanıyorum.
100 terimlik arama yapmazsın google bile 32 terimden sonrasını aramıyor
@un.real
bende tam olarak aynısını yaptım.. saol...
@cezve
peki sql kaç terimlik aramaya kadar sağlam kalır bi fikrin var mı?
Kaç terim bilmiyorum. Bakmak lazım. Ancak bu şekilde verim alamazsın. Denemedim ama 32 terimi bu şekilde aramak, elbette data`na göre, dakikalar sürebilir.
Çeşetli algoritmalar ile ve, veya index`leme metoduyla sayısal arama olayı yapılabilir. Mysql`in full-text olayına da bir göz atmanı tavsiye ederim. Bunlarla kullanacağın şekle göre uygun şeyler çıkarmak mümkün.