Mysql ile Sadece belirli verileri çekmek veya çıkarmak (IN ve NOT IN kullanımı)
Merhaba dostlar, Mysql ile çalışırken bazı durumlarda bildiğimiz bazı id değerine sahip içerikleri çekmek ya da bütünden ayırmak isteyebiliriz. Bu durumda IN ve NOT IN kullanıyoruz. Kullanımı oldukça basit hemen birkaç senaryo ve örnek yapalım.
İlk senaryomuz içerikler listesinin tamamından id değeri 15, 44 ve 22 numaralı olanları hariç tutalım.
SELECT * FROM icerik WHERE id NOT IN (15,44,22)
İkinci senaryomuzda id değerleri 12,432 ve 46 olan ve durum değeri 1 olan içerikleri çekelim.
SELECT * FROM icerik WHERE durum=1 AND id IN (12,432,46)
Şimdi PDO üzerinde kodları yazalım ve pratik yapalım. İlk senaryo ile başlıyorum.
$Sql=$db->query('SELECT * FROM icerik WHERE id NOT IN (15,44,22)');
İkinci senaryoda durum değerini execute ile iletelim
$sql=$db->prepare(SELECT * FROM icerik WHERE durum=? AND id IN (12,432,46));
$sql->execute(array(1));
$veriler=$sql->fetchAll(PDO::FETCH_ASSOC);
...
Şimdi senaryomuzu biraz daha derinleştirelim ve bu değerleri post ile alalım.
//$_POST['haric'] isimli bir dizi gelmiş olsun
//Dizide 5 adet eleman olsun.
//Örnek olması açısından:
$_POST['haric'][0]=14;
$_POST['haric'][0]=144;
$_POST['haric'][0]=21;
$_POST['haric'][0]=65;
$_POST['haric'][0]=51;
//Şimdi gelen değerleri sorgumuza uygun şekle getirelim ve virgül ile birleştirelim;
$birlestir=implode(',',$_POST['haric']);
//Sorgumuzu bir değişkene atayalım.
$sorgu='SELECT * FROM icerik WHERE id NOT IN ('.$birlestir.')';
//Şimdide pdo ile çağıralım
$Sql=$db->query($sorgu);
Buradaki örneklerde ufak tefek yazım hataları olabilir. Amaç mantıken size olayı anlatmak. Genelde test etmeden burada kodluyorum.
Son yorumlar