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.