SQL birden fazla kelimeyi bağımsız aratmak [ÇÖZÜLDÜ]
Merhaba,
$ara = $_GET['ara'];
$parcala = explode("+",$ara);
$sorgu=$db->prepare("SELECT * from tbl_urun_stok WHERE Keywords LIKE :ara");
$sorgu->execute(array(':ara' => '%'.$ara.'%'));
Yukarıdaki sorguda arama alanın ayazdığım 2 veya daha fazla kelimeyi (hangi biri veya hangileri varsa) sonuc gösterecek şekilde nasıl düzenlerim.
Bulduğum bir kod örneğinde GET parametresindeki kelimeleri + ayıracı ile parçalayıp kelime sayısınca LIKE 'ın sonuna or (veya and) ile ekliyor. Ama kendi kodlarıma uyarlayamadım.
Saygılar.
Sözüne ettiğim örnek kodların ekran görünütüsü : https://prnt.sc/rw59w0
$ara = ltrim($ara, ',');
$ara = rtrim($ara, ',');
$parcala = explode(",",$ara);
$sor = "SELECT * from tbl_urun_stok WHERE SatisTipi = 1 and UrunDurum = 1 AND (";
for ($i=0; $i < count($parcala)-1 ; $i++) {
$sor .="Keywords LIKE '%$parcala[$i]%' OR ";
}
$sor .= "Keywords LIKE '%$parcala[$i]%')";
echo $sor;
$sorgu=$db->prepare($sor);
$sorgu->execute();
+
ile olduğunda explode nedense çalışmıyor.+
yerine ,
veya başka bişey kullanın.
$_GET
ile gelen değerin başında veya sonunda ,
olursa sorguyu bozmaması için ltrim
ve rtrim
ile temizleyin.$sorgu->execute();
bu kısımda tekrar $ara
değişkenini kullanmanıza gerek yok.