• 27-08-2019, 17:23:10
    #1
    Merhabalar bir proje üzerinde çalışıyorum. Veritabanımdaki tabloyu kaba taslak aşağıda göstermeye çalıştım. Bu tabloda aratmak istediğim dizi de aşağıda. Bunu nasıl yapabilirim?

    id baslik deger1 deger2 deger3
    1 test p23 a43 t12
    2 test p12 a22 t42

    $deger1dearanacakdizi = array('p23','p12');
    $deger2dearanacakdizi = array('a43');
  • 27-08-2019, 17:31:32
    #2
    SELECT FROM tablon WHERE like='%$aranacak%'
  • 27-08-2019, 17:34:10
    #3
    WebilisimNET adlı üyeden alıntı: mesajı görüntüle
    SELECT FROM tablon WHERE like='%$aranacak%'
    Bu değişken tek olduğunda çalışıyor ama dizi olduğunda çalışmıyor.
  • 27-08-2019, 17:33:47
    #4
    Hocam aşağıda ki gibi arama yapabilirsiniz.
    $sorgu = 'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ')';
  • 27-08-2019, 17:37:57
    #5
    mikropiks adlı üyeden alıntı: mesajı görüntüle
    Hocam aşağıda ki gibi arama yapabilirsiniz.
    $sorgu = 'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ')';
    Çok teşekkür ederim. Peki 2 tane dizi aratacağım yani 2 tane IN kullanmak istiyorum OR ile denedim olmadı.
  • 27-08-2019, 17:39:24
    #6
    Woxin adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkür ederim. Peki 2 tane dizi aratacağım yani 2 tane IN kullanmak istiyorum OR ile denedim olmadı.
    Aşağıda ki gibi deneyebilir misiniz hocam?

    $sorgu = 'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ') OR deger2 IN(' . implode(',', $deger2dearanacakdizi) . ')';
  • 27-08-2019, 17:44:59
    #7
    mikropiks adlı üyeden alıntı: mesajı görüntüle
    Aşağıda ki gibi deneyebilir misiniz hocam?

    $sorgu = 'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ') OR deger2 IN(' . implode(',', $deger2dearanacakdizi) . ')';
    Warning: Invalid argument supplied for foreach()

    Bu hatayı alıyorum ayrıca hocam kod şöyle gözüküyor sanırım tırnaklarla alakalı bir problem.

    'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ') OR deger2 IN(' . implode(',', $deger2dearanacakdizi) . ')';
    Yani son tırnaktan sonrakileri görmüyor sanırım.
  • 27-08-2019, 17:56:13
    #8
    Woxin adlı üyeden alıntı: mesajı görüntüle
    Warning: Invalid argument supplied for foreach()

    Bu hatayı alıyorum ayrıca hocam kod şöyle gözüküyor sanırım tırnaklarla alakalı bir problem.

    'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ') OR deger2 IN(' . implode(',', $deger2dearanacakdizi) . ')';
    Yani son tırnaktan sonrakileri görmüyor sanırım.
    Hocam 2 farklı verisyon daha ekliyorum olmadı döngüye sokup parça parça çektirmek gibi de bir yöntem uygulanabilir. Net kod yapısı olmadı için net bişi söylemek zor

    //Test 1
    $deger1dearanacakdizi = array('p23','p12');
    $deger2dearanacakdizi = array('a43');
    
    $ara1 = implode(',', $deger1dearanacakdizi);
    $ara2 = implode(',', $deger2dearanacakdizi);
    $sorgu = "SELECT * FROM tablo WHERE deger1 IN($ara1) OR deger2 IN($ara2)";
    
    
    // Test 2
    if(count($deger1dearanacakdizi) > 1 ){
        $kisim1 = "deger1 IN(" . implode(',', $deger1dearanacakdizi) . ")";
    }else{
        $kisim1 = "deger1='" . $deger1dearanacakdizi[0] . "'";
    }
    
    if(count($deger2dearanacakdizi) > 1 ){
        $kisim2 = "deger2 IN(" . implode(',', $deger2dearanacakdizi) . ")";
    }else{
        $kisim2 = "deger2='" . $deger2dearanacakdizi[0] . "'";
    }
    
    $sorgu = "SELECT * FROM tablo WHERE " . $kisim2 . ' OR ' . $kisim2;