PHP MYSQLI VERİ TABANI BAĞLANTISI

PHP MYSQLI VERİ TABANI BAĞLANTISI

Tarhi : 29-10-2017 02:13:14 | Yazar : ÇAĞLAR BOSTANCI

Mysqli veri tabanı bağlantı yöntemi nesne tabanlı (OOP) olarak oluşturulmuştur. Bu yöntem eski mysql_connect ‘in geliştirilmiş yöntemidir. Php mysql_connect yöntemi desteklemeyi bıraktı bunun yerine mysqli ve PDO yöntemini geliştirdi. Her iki veri tabanı bağlantı yöntemi birbirinden iyi olsa da, en çok tercik edilen PDO dur. Fakat mysqli yönteminde PDO yönteminde olan prepare metodu kullanılmaktadır. Bu nedenle mysli’nin pdo’dan kalır bir yanı yoktur. Bu yazımda sizlere bir mysqli veri tabanı bağlantısı nasıl oluşturulur ve veri tabanına select,insert,delete nasıl yapılır ayrıntılı örneklerle vereceğim. Bu örneklere başlamadan önce bazı fonksiyon ve mysqli metotları hakkında ön bilgi vereceğim.

$db->query("select") ; Bu yöntem prepare yöntemine göre daha hızlı fakat gerekli güvenlik önlemleri alınmazsa sql injection’a uğraya bilirsiniz. Bu nedenle dışarıdan gelen verileri real_escape_string fonksiyonundan geçirelim. Benim şahsi tercihim olarak. Sayfa açılırken ki veri tabanından gelecek sorguların hızlı olması için query kullanıyorum. Kullanıcıdan gelen verilerde ise prepare yöntemini kullanmaktayım.

$db->real_escape_string($disveri) : real_escape_string bu fonksiyon kullanıcıdan gelen verilerde güvenliği sağlamak (sql injection’ı önlemek) için kullanılır. Bu fonksiyonla sql için tehdit oluşturan yatay tek tırnak veya özel karakterlerin başına \ işareti konur.

$db->fetch_array() ; Veri tabanından verileri çekerken hangi yöntemle alacağımızı belirtmek için kullanılır. Parantez içerisine aşağıda belirtilen metotlar yazılır. Eğer değer verilmezse MYSQL_ASSOC kabul edilir.

$db->fetch_array(MYSQL_ASSOC) : Veri tabanından gelen verilerde sütun başlıklarını indeks olarak alır.
$db->fetch_array(MYSQL_NUM ) : Veri tabanından gelen verilerde sütun sırasını indeks olarak alır.
$db->fetch_array(MYSQL_BOTH) : Veri tabanından gelen verilerde sütun sırasını ve sütun başlıklarını indeks olarak alır.

Aşağıdaki fonksiyonlarda yukarıda belirtilen fonksiyonlarla aynı görevi yapmaktadır.

$sonuc->fetch_assoc()    :  Veri tabanından gelen verilerde sütun başlıklarını indeks olarak alır.
$sonuc->fetch_row()        : Veri tabanından gelen verilerde sütun sırasını indeks olarak alır.
$sonuc->fetc_object ()        :  Veri tabanından gelen verilerde sütun sırasını ve sütun başlıklarını indeks olarak alır.

///prepare method
$db->prepare("select")  : Bu metot sql sorgularını çalıştırmadan önce sql’de bir hata olup olmadığı kontrolünü yapar. Geriye ise boolen (true/false) bir değer gönderir. Ayı zamanda bind_param fonksiyonu ile sql injection’ı önler. Bunun için ön hazırlık veya ekstra bir şeye gerek yoktur. Daha güvenli ve daha profesyoneldir.

$db->affected_rows() : INSERT-DELETE-REPLACE veya UPDATE gibi sql sorguları sonucunda kaç satırı etkilediğini öğrenmek için kullanılır. Select yönteminde işe yaramaz.

$sorgu->num_rows() :   Veri tabanından select ile veri çekme sqli yazdığımızda, dönen verinin kaç satır olduğunu öğrenmek için kullanılır. Sorguların başarılı olup olmadığı denetimini yapmamızda yardımcı olur.

$sorgu->bind_param(parametre,Değiken1,Değişken2) :  Prepare yöntemi ile yazılan sql’lerde dışarıdan gelecek verileri geldiği yerlere ? konur. Daha sonra bu soru işaretinin yerine gelecek verileri ise bind_param yöntemi ile belirtiriz. Parametre yazan yere değişken sırasına göre integer ise i, string ise yazarız. Tabi tırnaklar içinde yazmayı unutmuyoruz. Parametreden sonra ise sırasına göre değişkenleri virgüllerle yazarız.

bind_param->parametreleri
i => İlgili değişken tipi tamsayı int
d => İlgili değişken tipi noktalı
s => İlgili değişken tipi String
b => İlgili değişken tipi Binary

$sorgu->execute() :  Prepare yöntemi ile girilen sql başarılıysa, sql çalıştırmak için bu fonksiyonun kullanırız.
$sorgu->get_result() :  Sql sorgularından dönen sonuçları dizi şeklinde bir değişkene almamızı sağlar.
$sorgur->fetch_assoc() :  Prepare ile gönderilen sorgu ile veri tabanından satır başlıklarına göre veri çekmeye yarar.

$db-close():  Son olarak veri tabanı bağlantımızı kapatıyoruz.

Öncelikle veri tabanı bağlantımız kuracağız. Veri tabanı bağlantımız kurarken hata ayıklama yöntemine göre iki tane yapacağız. Eğer hataları normal hata numaraları ve nedenleri ile almak istiyorsak aşağıdaki bağlantıyı kuracağız.

Bu yötemle bağlanmayıp tyr catch gibi hata ayıklama yapmak istiyorsak aşağıdaki bağlantıyı kurmalıyız.

Veri tabanından birden fazla veri çekmek istiyorsak aşağıdaki yöntemi kullanmalıyız. Veri tabanı bağlantısını yukarıda kurduğumuz için tekrar etmiyorum.

Veri tabanından sadece bir satırlık veri çekeceksek aşağıdaki yöntemi kullanmalıyız.

Query ile veri tabanına veri girişi örneği.

Query metodu ile veri tabanı işlemlerinde kullanıcılardan gelen verileri aşağıdaki yöntemle temizleyeceğiz.

Prepare metodu ile veri tabanından çoklu satır  veri çekmek için aşağıdaki yöntemi kullanacağız.

Prepare metot ile tekli satır veri alacaksak aşağıdaki yöntemi kullanacağız.

Prepare bind_result ile veri tabanından gelen verilerde sütun başlıklarını belirtiğimiz değişkenlere atayarak kullanacağız. Aşağıda.

Prepare ile veri tabanına veri girişi.  Aşağıda.

Prepare metodu ile veri silme.