• 03-07-2013, 17:38:51
    #1
    Merhaba,

    Php'nin duyurmuş olduğu son sürüm ile birlikte, eski mysql yapıları tarihe karışıp onların yerine mysqli kullanmayı zorunlu hale getirmiştir.

    Bir çok arkadaşımız scriptlerini mysql ile yazdığından dolayı sürüm güncellemesiyle bu tür hatalar ile karşılaşacaklardır.

    Şimdi kısaca örneklemeler yapalım.

    Mysqli ile bağlantı;
    $host 		=  "localhost";
    $kullanici    =  "root";
    $sifre        =  "";
    $database     =  "r10";
    
    $baglan = new mysqli($host,$kullanici,$sifre,$database);
    
    if($baglan->connect_errno > 0){
    die('Veritabanı bağlantısı sağlanamadı.<b>'.$baglan->connect_error.' </b>');
    }
    Yukarıda işlemde mysqli ile bağlantı gerçekleştirdik biraz daha ayrıntıya girersek;
    connect_errno = Bize bağlantı sırasında sorun oluştuğunda hata kodları üretir. Lakin bağlantı sorunsuz gerçekleşmiş ise sadece 0 üretir. Bizde eğer hata numarası 0'dan büyük ise, Veritabanı bağlantısı sağlanamadı yaz ve hata nedenini ekrana yazdır dedik.
    Örneğin;
    1044 = Kullanıcı adı hatası
    1045 = Şifre hatası
    1049 = Database hatası
    2002 = Host hatası

    connect_error : Yukarıda da yazdığım gibi hatanın nedenini bize bildirir.

    Bu arada bu bağlantıyı değişkenlere atayarak yaptımki rahat anlaşılabilmesi için, daha kısa yolu;

    $baglan = new mysqli('localhost','root','','r10');
    
    if($baglan->connect_errno > 0){
    die('Veritabanı bağlantısı sağlanamadı.<b>'.$baglan->connect_error.' </b>');
    }
    Mysqli ile birazda sorgu, kayıt ve silme işlemlerini gerçekleştirelim ki herkesin kafasında daha rahat yer alabilsin.

    $sorgu = $baglan->query("select mesaj from r10 order by id DESC");
    		 $yeni =$sorgu->fetch_object();
    		 echo $yeni->mesaj;
    $sorgu->close();
    Yukarıdaki işlemde r10 tablosu içerisinde yer alan mesaj sütunundaki verilerden en son yazılmış olanı ekrana yansıttık.
    $baglan = mysqli bağlantısı için oluşturduğumuz sınıfdan elimizde kaldı. (mysql_query yerine $bağlan->query yapmış olduk.)

    Peki çoklu verilerin çekiminde while döngüsünü nasıl kullanacağız ?

    $sorgu = $baglan->query("select mesaj from r10 order by id DESC");
    while($yeni=$sorgu->fetch_object()){
    echo $yeni->mesaj."<br>";
    }
    $sorgu->close();
    Burdada işlem farketmedi, işlem sorgusunu while içerisine aldığımızda aynı gereksimleri karşılayabiliyoruz.

    Silme ve kayıt işlemlerinede 1'er örnek gösterdikten sonra yapmış olduğum bir testi sizlerle paylaşmak istiyorum.


    Kayıt:
    $kaydet = $baglan->query("insert into r10 (mesaj,nick) values ('r10','Merhaba R10')");
    Silme:
    $sil = $baglan->query("delete from r10 where id='3'");
    Düzenleme:
    $duzenle = $baglan->query("update r10 set  mesaj='Duzenlemiş hali' where id='2'");
    Mysqli kullanımın basit örneklerini anlattım birde mysqli yerine kullanabileceğiniz alternatif PDO var.

    PDO mysql'e göre bağlantı hızlarında çoklu işlemler bazında fark göstermekteydi peki PDO ile mysqli karşılaştırırsak ne olur ?

    İşte sonuçlar (100 sorgu üzerinden)

    mysqli : 0.921875
    pdo : 0.953125
    
    mysqli : 0.84375
    pdo : 0.984375
    
    mysqli : 1.015625
    pdo : 1.03125

    1000 Sorgu üzerinden

    mysqli : 9.34375
    pdo : 9.46875
    
    mysqli : 9.53125
    pdo : 9.75
    
    mysqli : 9.640625
    pdo : 9.6875

    Genel anlamda mysqli pdo'ya göre daha performanslı, bu durumda hangisini kullanacağınız size kalmış.

    Sizin bilgilerinize en ufak bir şey katmışsa bundan mutluluk duyarım.

    Kendi bloglarınızda paylaşırken lütfen kaynak gösteriniz.
  • 03-07-2013, 17:53:19
    #2
    Üyeliği durduruldu
    Öncelikle paylaşımınız için teşekkür ederek, Çıkan son sürümde mysqli zorun olarak bir makale görmedim sadece klasik mysql yerine mysqli yada Pdo kullanılacak diye biliyorum ve PDO ile arasındaki performans farkını nasıl farkettiniz acaba. PDO daha iyi diye biliyorum.

  • 03-07-2013, 18:00:44
    #3
    Quismo adlı üyeden alıntı: mesajı görüntüle
    Öncelikle paylaşımınız için teşekkür ederek, Çıkan son sürümde mysqli zorun olarak bir makale görmedim sadece klasik mysql yerine mysqli yada Pdo kullanılacak diye biliyorum ve PDO ile arasındaki performans farkını nasıl farkettiniz acaba. PDO daha iyi diye biliyorum.

    Merhaba hocam, son sürüm güncellemelerde mysql kodları noticeden başlayarak warning'e doğru uyarı methodları uygulanarak devam edecek.

    Buda demek oluyorki mysqli kullanımı zorunlu hala getiriliyor.

    Sizin verdiğiniz istatistik'de query functionları baz alınarak yapılmış benim yaptığımda ise connect 'ler ile süre değerlendirmesi yapıldı.

    Boş bir vaktimde resimdekini deneyeceğim aradaki farkları sizlerle paylaşırım.