v2.5.2
Giriş yap

SQL birden fazla kelimeyi bağımsız aratmak [ÇÖZÜLDÜ]

pcmemo
909 defa görüntülendi

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

makifgokce
1717 gün önce
$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.