• 11-04-2022, 14:22:14
    #1
    Merhaba arkadaşlar


    $listesor=$db->prepare("select * from icerik where icerik_kategori IN ($kategoriid,$kategoriid2,$kategoriid3,$kategoriid4)");
    böyle bir sorgum var, burada çektiğim $kategoriid kısımları bazen boş olabiliyor ve gelen veri boş olduğunda hata veriyor, bunu nasıl çözebilirim, yani 4 tane $kategoriid kısmı her zaman dolu olmayabiliyor, bunun kontrolünü nasıl sağlayıp çözebilirim ? Şimdiden teşekkürler herkese.
  • 11-04-2022, 14:47:10
    #2
    Aşağıda verdiğim kodda $categories değişkeni bir dizi olmalı, örneğin array($kategoriid1, $kategoriid2, $kategoriid3, $kategoriid4, $kategoriid5, ...) gibi. Aşağıdaki kod PDO için placeholder'ları oluşturup sorguyu yürütüyor.
    $query = "SELECT * FROM icerik WHERE icerik_kategori IN (" . str_repeat("?, ", count($categories) - 1) . "?)";
    $results = $db->prepare($query)->execute($categories);
  • 11-04-2022, 14:47:55
    #3
    $sql_text = '';
    if($kategoriid != ''){
        $sql_text .= $kategoriid.', ';
    }
    
    if($kategoriid2 != ''){
        $sql_text .= $kategoriid2.', ';
    }
    
    // bu şekilde kaç tane varsa alt alta ekleyin
    
    // sonda kalan ', ' temizliği
    $sql_text = rtrim($sql_text,', ');
    
    $listesor=$db->prepare("select * from icerik where icerik_kategori IN ($sql_text)");
  • 11-04-2022, 14:53:56
    #4
    segfault adlı üyeden alıntı: mesajı görüntüle
    Aşağıda verdiğim kodda $categories değişkeni bir dizi olmalı, örneğin array($kategoriid1, $kategoriid2, $kategoriid3, $kategoriid4, $kategoriid5, ...) gibi. Aşağıdaki kod PDO için placeholder'ları oluşturup sorguyu yürütüyor.
    $query = "SELECT * FROM icerik WHERE icerik_kategori IN (" . str_repeat("?, ", count($categories) - 1) . "?)";
    $results = $db->prepare($query)->execute($categories);
    Teşekkürler hocam
  • 11-04-2022, 14:54:23
    #5
    ebasit adlı üyeden alıntı: mesajı görüntüle
    $sql_text = '';
    if($kategoriid != ''){
        $sql_text .= $kategoriid.', ';
    }
    
    if($kategoriid2 != ''){
        $sql_text .= $kategoriid2.', ';
    }
    
    // bu şekilde kaç tane varsa alt alta ekleyin
    
    // sonda kalan ', ' temizliği
    $sql_text = rtrim($sql_text,', ');
    
    $listesor=$db->prepare("select * from icerik where icerik_kategori IN ($sql_text)");
    Bu aklıma gelmişti sizin tavsiyeniz üzerine yaptım, sorun yok çalışıyor, teşekkürler hocam