SQL Select 中的 SQL Select 不接受 WHERE x LIKE %y%


SQL Select inside Select doesn't accept WHERE x LIKE %y%

我希望这段代码在底部接受多个 WHERE 参数,但是当添加的文本发挥作用时,它什么也不返回。它返回没有筛选器应返回的内容。

我正在尝试做的是从发布到 PHP 代码中的用户输入数据中过滤从内部查询中获得的结果。

在这一点上,任何建议都会有所帮助。

    $OgrenciNo= " AND OgrenciNo LIKE %1005%";
    $sth = $conn->prepare('SELECT t.* FROM (SELECT ogrenciler.OgrenciNo, ogrenciler.adsoyad as adsoyad1,
        dersler.Ders, dersler.DersKodu, tarih.Tarih, ogretmenler.isim, 
        login.adsoyad, onayturu.Onay, mazeretturu.tur,  
        mazeretaciklama.Aciklama, mazeretaciklama.LogTarihi
        FROM ogrenciler, tarih, aratablo, ogretmenler,
        mazeretaciklama, login, dersler, mazeretturu, onayturu
        WHERE aratablo.AciklamaID = mazeretaciklama.AciklamaID
        AND aratablo.TarihID = tarih.TarihID
        AND aratablo.DersID = dersler.DersID
        AND aratablo.OnaylayanID = login.OnaylayanID
        AND aratablo.OnayID = onayturu.OnayID
        AND aratablo.Mazturu = mazeretturu.Mazturu
        AND dersler.OgrGorID = ogretmenler.OgrGorID
        AND mazeretaciklama.OgrenciNo = ogrenciler.OgrenciNo) t
        WHERE LogTarihi > "1900-01-01"
    '.$OgrenciNo
    );
    $sth->execute();

正常结果如下:

array (size=2)
  0 => 
    array (size=11)
      'OgrenciNo' => string '1005.02021' (length=10)
      'adsoyad1' => string 'Örnek Öğrenci' (length=13)
      'Ders' => string 'Ders Adı' (length=8)
      'DersKodu' => string 'KOD000' (length=6)
      'Tarih' => string '2016-02-01' (length=10)
      'isim' => string 'Öğretim Elemanı İsmi' (length=20)
      'adsoyad' => string 'ROOT' (length=4)
      'Onay' => string 'Onaylandı' (length=9)
      'tur' => string 'Sınav' (length=5)
      'Aciklama' => string 'hastalık hastası' (length=16)
      'LogTarihi' => string '2016-02-09 09:14:52' (length=19)
  1 => 
    array (size=11)
      'OgrenciNo' => string '1035.02021' (length=10)
      'adsoyad1' => string 'ahmet mehmet' (length=12)
      'Ders' => string 'E-Ticaret Sistem Tasarımı' (length=25)
      'DersKodu' => string 'BIL446' (length=6)
      'Tarih' => string '2016-02-07' (length=10)
      'isim' => string 'Yrd. Doç. Dr. Mustafa Cem Kasapbaşı' (length=35)
      'adsoyad' => string 'Araş. Gör. Erdem Yavuz' (length=22)
      'Onay' => string 'Onaylanmadı' (length=11)
      'tur' => string 'Ders' (length=4)
      'Aciklama' => string 'cenaze vardı' (length=12)
      'LogTarihi' => string '2016-02-11 13:33:53' (length=19)

我正在尝试过滤掉第二个结果,但 LIKE 参数似乎不起作用。

根据流行的需求,这是我在页面中打印出来的整个查询(附言与顶部唯一不同的是它在末尾包含"AND OgrenciNo LIKE %1005%"(:

 SELECT t.* FROM (SELECT ogrenciler.OgrenciNo, ogrenciler.adsoyad as adsoyad1, dersler.Ders, dersler.DersKodu, tarih.Tarih, ogretmenler.isim, login.adsoyad, onayturu.Onay, mazeretturu.tur, mazeretaciklama.Aciklama, mazeretaciklama.LogTarihi FROM ogrenciler, tarih, aratablo, ogretmenler, mazeretaciklama, login, dersler, mazeretturu, onayturu WHERE aratablo.AciklamaID = mazeretaciklama.AciklamaID AND aratablo.TarihID = tarih.TarihID AND aratablo.DersID = dersler.DersID AND aratablo.OnaylayanID = login.OnaylayanID AND aratablo.OnayID = onayturu.OnayID AND aratablo.Mazturu = mazeretturu.Mazturu AND dersler.OgrGorID = ogretmenler.OgrGorID AND mazeretaciklama.OgrenciNo = ogrenciler.OgrenciNo) t WHERE LogTarihi > "1900-01-01" AND OgrenciNo LIKE %1005%

你的喜欢条件应该是这样的。只需在其中添加'即可。:

 $OgrenciNo= " AND OgrenciNo LIKE '%1005%'";