SQL sorgu yardım
Merhaba,
aşağıdaki gibi bir sorgum var
$sorgu = $db->prepare("SELECT * FROM tbl_anket_katilim WHERE Done LIKE 0");
$sorgu->execute();
WHERE bölümüne nasıl bir şey eklemeliyim ki tbl_anket_katilim tablosunda PollUsers sütununda virgüllerle ayrılmış olarak bulunan bir çok UserID içinde benim 1 olan ($_SESSION['UserID']) UserID'im varsa o satırı listelesin. O satırın PollUsers sütünunda benim UserID'im yoksa listelemesin.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
Cevap için teşekkür ederim. Soruyu yazdıktan 10 dk sonra senin yazdığın gibi bir çözüm aklıam geldi ve uyguladım. Çalışıyor.
<?php
if ($say != 0) {
$sorgu = $db->prepare("SELECT * FROM tbl_anket_katilim INNER JOIN tbl_anket ON tbl_anket.Poll_ID = tbl_anket_katilim.Poll_ID WHERE Done LIKE 0");
$sorgu->execute();
foreach ($sorgu as $row) {
$PollUsers = explode(',', $row['PollUsers']); if (in_array($_SESSION['UserID'], $PollUsers)) { echo "Katılmanız gereken anket başlığı: ".$row['Poll_Title_Tr']."<br>"; } } ?>
Fakat ben daha sorgu aşamasında iken bunu yapabilmek istiyorum.
$sorgusay = $db->prepare("SELECT COUNT(*) FROM tbl_anket_katilim WHERE Done LIKE 0");
$sorgusay->execute();
$say = $sorgusay->fetchColumn();
Yukarıdaki örnekteki gibi saydırıp $say sıfırna eşit değilse bu uyarıyı gösterecek pencereyi gösterip. Satırları içinde bastırıcam.
FIND_IN_SET için benim kodlarımla bir örnek oluşturman mümkün mü?
<?php
$sorgu = $db->prepare("SELECT * FROM tbl_anket_katilim WHERE Done LIKE 0");
$sorgu->execute();
while($row=$sorgu->fetch(PDO::FETCH_ASSOC)) {
$kontrol=$row['PollUsers'];
$arr = explode (",",$kontrol);
$kullanci=$_SESSION['UserID'];
if (in_array($kullanci, $arr)) {
echo "kullanici id var";
}
}
?>