SQL Select里面选择不接受WHERE x LIKE%y%

时间:2016-02-15 09:04:26

标签: php mysql

我希望此代码在底部接受多个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参数似乎不起作用。

根据大众的要求,我在页面中打印出来之后的整个查询(PS唯一不同于顶部的是它包含"和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%

1 个答案:

答案 0 :(得分:0)

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

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