• 17-11-2021, 02:38:34
    #1
    Daha önce böyle birşeyle karşılaşmadım, bir alanım var ve içinde 120-121 diye iki adet id no var ben bunu ayrı bir tabloda id no olarak arıyordum ve bana 120 id nolu sonucu verdi aslında sonuç dönmeyecek bende ayrıştırıp tire(-) varsa birden fazla id vardır deyip döngüye alacaktım ama buna gerek kalmadan rakamdan sonrasını görmezden gelip direkt where de bana sonucu verdi

    $gelen_kayit_id ='120-121';
    $baglanti -> query("SELECT * FROM kayitlar WHERE kayit_id='$gelen_kayit_id'");
    Sonuç 120 nolu kayıt dönüyor. burada otomatik int'e dönüştürmeyi iptal edemiyormuyuz?
  • 17-11-2021, 03:17:40
    #2
    <?php
    
        $ids = "120-121-122-123-124";
        
        $explodeIds = explode("-", $ids);
        $query = "select * from kayitlar where kayit_id = ".join(" or kayit_id = ", $explodeIds);
    Sonuç:
    select * from kayitlar where kayit_id = 120 or kayit_id = 121 or kayit_id = 122 or kayit_id = 123 or kayit_id = 124

    Yada idler belli bir aralıktaysa örnek 120 ~ 151, bunun için between keywordunu kullanabilirsiniz.
    Örnek;
    select * from kayitlar where kayit_id between 120 and 151
  • 17-11-2021, 03:18:12
    #3
    mysql de tür dönüşümü olayı varmış yani int olarak gördüğü sayıyı alıyor, bu sorunu şu şekilde çözdüm eğer birden fazla id kullanacaksam başına 0- getirdim böylece 0 hiçbir yerde olmadığından onu bulamaz zaten ve çoklu sorgulama yapacaksam 0 varmı varsa explode php ile bölüp arama yapabilirim artık.