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');
Veritabanında Dizi Arama
7
●204
- 27-08-2019, 17:34:10Bu değişken tek olduğunda çalışıyor ama dizi olduğunda çalışmıyor.WebilisimNET adlı üyeden alıntı: mesajı görüntüle
- 27-08-2019, 17:37:57Çok teşekkür ederim. Peki 2 tane dizi aratacağım yani 2 tane IN kullanmak istiyorum OR ile denedim olmadı.mikropiks adlı üyeden alıntı: mesajı görüntüle
- 27-08-2019, 17:39:24Aşağıda ki gibi deneyebilir misiniz hocam?Woxin adlı üyeden alıntı: mesajı görüntüle
$sorgu = 'SELECT*FROM tablo WHERE deger1 IN(' . implode(',', $deger1dearanacakdizi) . ') OR deger2 IN(' . implode(',', $deger2dearanacakdizi) . ')'; - 27-08-2019, 17:44:59Warning: Invalid argument supplied for foreach()mikropiks adlı üyeden alıntı: mesajı görüntüle
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:13Hocam 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 zorWoxin adlı üyeden alıntı: mesajı görüntüle
//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;