PHP ile MYSQL Veri Tabanına Bağlanmak

PHP ile bir SQL veri tabanına bağlanmanın iki yöntemi bulunuyor, MySQLi ve PDO.

Haz 1, 2021 - 22:57
Oca 16, 2024 - 19:59
 0  173
PHP ile MYSQL Veri Tabanına Bağlanmak
İçindekiler

    MySQLi açılımı MySQL Improved yani, Geliştirilmiştir. MySQLi, bir MySQL veritabanın arayüzüne yeni özellikler getiren kapsamlı bir uzantıdır. MySQL hem yöntemsel, hem de nesne yönelimlidir. Yöntemsel yanını ise eski MySQL sürümlerinden almaktadır.

    MySQL’in kendisi bir görevi çizgisel, adım adım prosedürlere böler ve düzenlemeyi zorlaştırır çünkü kodu en baştan düzenlemeniz gerekmektedir. MySQLi ise veriyi fonksiyonlu bir takım değiştirilebilir objeler olarak görmektedir ve kullanıcıların kolaylıkla kullanıcı eklemesine veya veri silmesine izin verir.

    PDO ise PHP Data Object olarak açılır. PDO ve MySQLi arasındaki başlıca fark PDO’nun aynı script içinde PHP kullanan birden fazla farklı veritabanını (MySQL, MSSQL, Informix ve PostgreSQL) desteklemesidir.

    Orijinal ‘mysql_’ fonksiyonları deprecated (artık kullanılmayan) olduğundan güvenli olmaması ve artık geliştirilmemesi sebebiyle kullanılmamalıdır.

    İkisinin de desteklediği en önemli özelliklerden biriyse prepared statements desteği sağlamalarıdır. Bu özellikle aynı sorguyu birden fazla çalıştırmak istediğinizde zaman tasarrufu yapabilirsiniz. Bu özellik ayrıca veritabanına değişiklik yaparken SQL injection saldırılarını ortadan kaldırmayı sağlar.

    Hangi yöntemi kullanırsanız kullanın oluşturduğunuz MySQL veritabanına bağlanmak için doğru bilgilere ihtiyacınız olacak. İşte bu noktada önceden bir kenara not aldığınız MySQL veritabanı bilgileri devreye girecektir.

    Ayrıca yapılandırma için doğru sunucu adına veya hostname‘e de ihtiyaç duyacaksınız. Hostinger MySQL sunucusu hostname’i olarak “localhost”u kullanır. Genel olarak, eğer PHP script’inizi veritabanı ile aynı sunucuya yüklediyseniz kullanacağınız hostname bu olacaktır.

    Eğer bir veritabanına uzak bir konumdan (örneğin bilgisayarınız) bağlanıyorsanız MySQL sunucusunun IP adresini kullanmanız gerekir. Daha fazla bilgi için hosting sağlayıcınızla iletişime geçin ve hostname olarak kullanmanız gereken doğru bilgileri edinin.

    Bir PHP Script’ini MySQL’e Bağlamak için MySQLi Kullanımı

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    // Bağlantıyı kurma
    $conn = mysqli_connect($servername, $username, $password, $database);
    // Bağlantı kontrolü
    if (!$conn) { die('Bağlantı Hatası: '.mysqli_connect_error());// Eğer bağlantı başarısız olursa burada hata bilgisi gösterilecektir.
    }else{
    echo 'Bağlantı Başarılı'; // Eğer bağlantı başarılıysa ekrana bu içerik gösterilecektir. 
    }

    Eğer bağlantı başarılı olunca ekrana Bağlantı başarılı bilgisini yazdırmak istemiyorsanız else{ ...} kısmını silmeniz yeterli olacaktır.

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    // Bağlantıyı kurma
    $conn = mysqli_connect($servername, $username, $password, $database);
    // Bağlantı kontrolü
    if (!$conn) {
    die('Bağlantı Hatası: '.mysqli_connect_error()); // Eğer bağlantı başarısız olursa burada hata bilgisi gösterilecektir.
    }

    Bağlantı kurulum işleminden sonra veri tabanı ile yapılmak istenilen işlemler başlatılır ve sonrasında mysqli_close() komutu ile bağlantı kesme işlemi yapılır.

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    // Bağlantıyı kurma
    $conn = mysqli_connect($servername, $username, $password, $database);
    // Bağlantı kontrolü
    if (!$conn) {
    die('Bağlantı Hatası: '.mysqli_connect_error());// Eğer bağlantı başarısız olursa burada hata bilgisi gösterilecektir.
    }
    
    // bu alana istenilen veri tabanı işlemleri gerçekleştirilir. 
    
    // Bağlantıyı kesme
    mysqli_close($conn);

    Eğer birden fazla sayfada çalışılacak ve her sayfada bu kodları yazmak istemiyorsanız ve aşağıdaki şekilde bir veri tabanı tablomuz olduğunu varsayalım.

    +----+--------------+---------+------------------------+-------+
    | no | Ad | Soyad |eposta | bolum |
    +----+--------------+---------+------------------------+-------+
    | 1 | Fehmi Noyan | ISI | fni18444@gantep.edu.tr | eee |
    | 2 | Mehmet | Korkmaz | kormkaz@linux.org.tr | pe |
    | 3 | Adem | Sarnici | a_sarnici@yahoo.com | pe |
    | 4 | Seckin Fatih | Solgun | sf_solgun@freebsd.org | me |
    +----+--------------+---------+------------------------+-------+
    1. dbbaglanti.php diye bir dosya oluşturulur.
    2. Bağlantı kontrolü alanına kadar yer alan kod bu dosyanın içine yazılır.
    3. dbkes.php diye bir dosya oluşturulur.
    4. İçeriğin olacağı dosyada(index.php vb.) bu dosyalar çağrılarak kodlar çalıştırılır.

    dbbaglanti.php dosya içeriği:

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    $conn = mysqli_connect($servername, $username, $password, $database);
    if (!$conn) {die('Bağlantı Hatası: '.mysqli_connect_error());}

    dbkes.php dosya içeriği;

    mysqli_close($conn);

    index.php dosya içeriği;

    require_once 'dbbaglanti.php'; // require_once kodun bir kez gerektiğini ve kullanılacağını belirterek dosyanın içeriğini yükler/dahil eder.
    $filtre='SELECT * FROM ogrenci';
    $sorgu = mysqli_query($conn, $filtre);
    // tablo başlığı döngüye dahil değildir.
    echo '<table border='1' style='border-collapse: collapse;'>
    <tbody>
    <tr style='background: yellow;'>
    <td>No</td>
    <td>Ad Soyad</td>
    <td>E-Posta</td>
    <td>Bölüm</td>
    </tr>';
    // veri tabanından while döngüsü ile çekeceğimiz verileri satır ve sütunlara işliyoruz.
    while($satir = mysqli_fetch_array($sorgu)){
    echo '<tr>
    <td>'.$satir['no'].'</td>
    <td>'.$satir['Ad'].' '.$satir['Soyad'].'</td>
    <td>'.$satir['eposta'].'</td>
    <td>'.$satir['bolum'].'</td>
     </tr>';
    }
    // döngü sonrası tablomuzu sonlandırıyoruz.
    echo '
    </tbody>
    </table>';
    include_once 'dbkes.php'; // include_once kodun bir kez dahil edileceğini ve kullanılacağını belirterek dosyanın içeriğini yükler/dahil eder.

    Ekran Çıktısı:

    No Ad Soyad E-Posta Bölüm
    1 Fehmi Noyan ISI  fni18444@gantep.edu.tr eee
    2 Mehmet Korkmaz kormkaz@linux.org.tr pe
    3 Adem Sarnici a_sarnici@yahoo.com pe
    4 Seckin Fatih Solgun sf_solgun@freebsd.org me

    Bir PHP Script’ini MySQL’e Bağlamak için PDO Kullanımı

    PDO kullanımını yukarıdaki örnekle açıklayalım.

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    try { // istisnaların denetimi
    // Bağlantı kurma
    $conn = new PDO('mysql:host=$servername;dbname=$database', $username, $password);
    // Bağlantıyı kullanıyor sayfa içeriğimizi hazırlıyoruz.
    $filtre='SELECT * from ogrenci';
    // foreach döngüsü ile her bir satırı alarak ekrana yazdırıyoruz.
    foreach($conn->query($filtre) as $row) {
    print_r($row);
    }
    // Bağlantıyı sonlandırıyoruz.
    $conn = null;
    }
    catch (PDOException $e) {
    die('Hata: ' . $e->getMessage()); // istisna kontrolü sonucu hata varsa ekrana yazacaktır.
    }

    Try komutu burada hataları yakalamak için kullanılmıştır.

    Yukarıda bahsettiğimiz birden fazla sayfa kullanımı için aynı yöntemle sayfalara bölerek kullanım sağlayabiliriz. 

    dbbaglanti.php dosya içeriği:

    // Veri tabanı bilgileri
    $servername = 'localhost';
    $database = 'veritabaniadi';
    $username = 'kullaniciadi';
    $password = 'sifre';
    try {
    $conn = new PDO('mysql:host=$servername;dbname=$database', $username, $password);

    dbkes.php dosya içeriği;

    $conn = null;
    }
    catch (PDOException $e)
    {
    die('Hata: ' . $e->getMessage()); 
    }

    index.php dosya içeriği;

    require_once 'dbbaglanti.php';
    // Bağlantıyı kullanıyor ve sayfa içeriğimizi hazırlıyoruz.
    $filtre='SELECT * from ogrenci';foreach($conn->query($filtre) as $row) 
    {
    print_r($row);
    }
    include_once 'dbkes.php';

    Tepkiniz nedir

    Beğendim Beğendim 0
    Beğenmedim Beğenmedim 0
    Muhteşem Muhteşem 0
    Eğlendim Eğlendim 0
    Sinirlendim Sinirlendim 0
    Üzüldüm Üzüldüm 0
    Vay Vay 0