PHP MySQL Veritabanı Bağlantısı Nasıl Yapılır? (PDO ve MySQL ile)

PHP MySQL Veritabanı Bağlantısı Nasıl Yapılır? (PDO ve MySQL ile)

Eğer web geliştirme öğrenmeye yeni başlayan biriyseniz PHP MySQL veritabanı bağlantısı nasıl yapılır bilmek fazlasıyla işinize yarayacaktır. Bu şekilde farklı şekilde oluşturduğunuz tabloları yönetebilir, düzenleyebilir, görüntüleyebilir veya silebilirsiniz. Bu rehberimizde bunun en kolay yollarını öğreneceksiniz.

Bir MySQL Veritabanı Oluşturma (Tercihen)

Eğer henüz bir MySQL veritabanı oluşturmadıysanız bu adım gereklidir. Eğer bir Hostinger kullanıcısıysanız bunu Hostinger’ın hPanel’i üzerinden birkaç adımda kolaylıkla gerçekleştirebilirsiniz:

  1. Databases (Veritabanları) kısmının altındaki MySQL Databases (MySQL Veritabanları) menüsünü bulun.
  2. Gerekli kısımları girin ve Create (Oluştur) tuşuna basın.
    Hostinger Kontrol Paneli MySQL Veritabanı Oluştur

Cpanel üzerinde nasıl bir MySQL veri tabanı oluşturabileceğinizi öğrenmek için bu rehbere göz atın. Ancak unutmayın ki henüz oluşturduğunuz veritabanları boştur ve onlarla çalışmadan önce veriyle doldurulmaları gerekir.

Oluşturduğunuz MySQL veritabanı bilgilerini bir köşeye yazın. Sıradaki adımda onlara ihtiyacınız olacak.

Bir PHP Script’inin MySQL’e Bağlanmasının İki Yolu

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

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ı

Bir PHP script’ini MySQL’e bağlamak için bu adımları takip edin:

  1. File Manager (Dosya Yöneticisi) -> public_html konumunu takip edin.
  2. Yukarıdaki menüden Yeni Dosya ikonuna tıklayın.
  3. Bu dosyayı databaseconnect.php olarak kaydedin. Dosyanın adını istediğiniz gibi değiştirebilir ancak uzantı olarak .php kullanıldığından emin olun.
  4. Dosyayı açmak için çift tıklayın ve açtıktan sonra aşağıdaki kod satırlarına kopyalayıp yapıştırın. <?php aşağısındaki ilk dört değeri daha önce bir kenara yazdığınız bilgilerle değiştirin.
    <?php
    $servername = "localhost";
    $database = "veritabaniadi";
    $username = "kullaniciadi";
    $password = "sifre";
    
    // Create connection
    
    $conn = mysqli_connect($servername, $username, $password, $database);
    
    // Check connection
    
    if (!$conn) {
    
        die("Connection failed: " . 
    mysqli_connect_error());
    
    }
    echo "Connected successfully";
    mysqli_close($conn);
    ?>

MySQLi Kodu Açıklaması

Bu script’de kullanılan ana yöntem mysqli_connect() metodudur. Bu, bir MySQL sunucusuna yeni bir bağlantı kurmak için dahili bir PHP fonksiyonudur.

Kodumuzun hemen en başında birkaç değişken deklarasyonu görüyoruz ve değerler bu değişkenlere atanmış. Genellikle düzgün bir bağlantı oluşturabilmek için dört değişkene ihtiyacımız var: $servername, $database, $username, ve $password. Kodumuzda veritabanı detaylarını eksiksiz olarak bu değişkenlere değer olarak belirledik ve daha sonra bu değişkenleri ilgili fonksiyona geçiriyoruz.

Burada bir die() fonksiyonu çalıştırıldı ve bunun anlamı scriptimizi sonlandırma ve girdiğimiz mesajı bize göstermek oluyor. Yani varsayılan olarak Connection Failed: ve hata mesajı bize sorunu belirlememizde yardımcı olacak.

Öte yandan eğer bağlantı başarılıysa, kod bize Connected successfully sonucunu verecektir.

Kodun son bölümü ise mysqli_close‘dur. Bu kod veritabanına kurulan bağlantıyı elle sonlandıracaktır. Eğer belirlenmemişse, bağlantı script tamamlandığında kendi kendini kapatacaktır.

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

Bir PHP script’ini MySQL’e bağlamanın diğer yöntemi ise PDO kullanımıdır. Bu yöntem bir öncekine oldukça benzerdir ancak ufak farklılıklara sahiptir:

  1. public_html‘de pdoconfig.php adında bir dosya oluşturun ve aşağıdaki kodu yerleştirin. Her zamanki gibi bu değerleri veritabanı bilgilerinizle değiştirmeyi unutmayın. İşiniz bittikten sonra Kaydet & Çık‘a tıklayın.
    <?php
        $host = 'localhost';
        $dbname = 'veritabaniadi';
        $username = 'kullaniciadi';
        $password = 'sifre';
  2. Aynı dizinde databaseconnect.php adında bir dosya oluşturun ancak bu sefer aşağıdaki kodu yapıştırın. Eğer önceki dosyaya farklı bir isim verdiyseniz require_once değerini değiştirmeyi unutmayın.
    <?php
    require_once 'pdoconfig.php';
     
    try {
        $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        echo "Connected to $dbname at $host successfully.";
    } catch (PDOException $pe) {
        die("Could not connect to the database $dbname :" . $pe->getMessage());
    }

PDO Kodu Açıklaması

Bir PDO veritabanı Data Source Name (DSN), kullanıcı adı ve şifre ile yeni bir ‘PDO object’ oluşturmanızı gerektirir.

DSN veritabanı türünü, veritabanının adını ve gerekliyse diğer bilgileri tanımlar. Bunlar, dbconfig.php dosyası içinde belirlediğimiz değişkenler ve değerlerdir. Bu dosyadan ise databaseconnect.php dosyasının require_once satırında bir kez bahsedilmektedir.

İkinci dosyada ‘try… catch…’ kodunu göreceksiniz. Bunun anlamı script’in verilen kodu kullanarak MySQL ile bağlantı kurmaya çalışır ve eğer bir problem oluşursa ‘catch’ bölümündeki kod çalıştırılır. Catch block kullanarak hata mesajlarını gösterebilir veya try block başarısız olursa alternatif bir kod çalıştırabilirsiniz.

Eğer PHP bağlantı kodu başarılı bir şekilde çalışır ve bağlantı sorunsuz oluşturulursa “Connected to $dbname at $host successfully.” mesajını elde edersiniz. Ancak deneme başarısız olursa catch kodu basit bir hata mesajı gösterir ve script’i sonlandırır.

PHP MySQL Veritabanı Bağlantısı Hatalarını Çözümleme

Bağlantının başarı olup olmadığını görmek için domaininiz/databaseconnect.php kısmına gidin. Eğer PHP dosyasına farklı bir isim verdiyseniz bu noktaya dikkat edin.

Eğer her şey sorunsuz bir biçimde çalışıyorsanız “Connected successfully” benzeri bir mesaj görürsünüz.

Eğer bağlantı başarısızsa farklı bir mesaj görürsünüz. Hata mesajları MySQLi ve PDO için biraz farklıdır.

Yanlış Şifre Hatası

Bu hata PHP kodundaki şifreyi veya herhangi bir bilgiyi değiştirdiğiniz (veritabanındaki gerçeğini değiştirmeden) takdirde oluşur.

Eğer sonunda “(using password: YES)” olan “Access denied” veya “Could not connect to database” mesajını görürseniz ilk yapmanız gereken veritabanı bilgilerini kontrol etmektir. Eksik veya yanlış olan biri kısım olabilir.

MySQL Sunucusuna Bağlanılamıyor/h3>
Eğer MySQLi’de “Can’t connect to MySQL server on ‘server’ (110)” hatasını alırsanız bunun anlamı script’in sunucudan yanıt alamadığıdır. Bu, $servername olarak “localhost” yerine “sunucu” belirlediyseniz ve isim tanınmadıysa gerçekleşmektedir.

PDO’da ise MySQL host’unun bulunamadığını belirten bilgilerle birlikte “Connection failed: SQLSTATE[Hy000] [2002]” gibi bir hata mesajı alırsınız. Bu hatayı da tıpkı MySQLi’deki hatayı çözdüğünüz gibi çözebilirsiniz.

Ve elbette, bir hata çözümlemedeki altın kuralı unutmamak oldukça önemlidir: error_log kontrolü.

Bu dosyayı script’in çalıştığı aynı klasörde bulabilirsiniz. Örneğin public_html içinde bir script çalıştırıyorsak, error_log dosyası aynı klasörde olacaktır.

Sonuç

Bu rehberde veritabanları ve PHP Data Objects (PDO) ile MySQLi kullanarak PHP MySQL veritabanı bağlantısı nasıl yapılır öğrenmiş oldunuz.

Öğrendiklerinizi daha gelişmiş scriptlerde ve konfigürasyonlarda kullanabilirsiniz. Bir veritabanına bağlanmak onlarla çalışmaya başlamanın ilk ve en önemli adımıdır.

Eğer bu rehberi takip ettiğinizde herhangi bir sorun yaşarsanız aşağıdaki yorumlar kısmında bizimle paylaşın.

Author
Yazar

Gürkan M.

Gürkan, Amerikan Kültürü ve Edebiyatı mezunu ve Hostinger’da pazarlama asistanı olarak içerik yönetimi, dijital pazarlama ve çevirilerden sorumlu. Küçük yaşta tanışıp o günden bu yana hayatının büyük bir parçası olan internette web geliştirme ve özel olarak WordPress konularıyla yakından ilgileniyor. Ayrıca, pervasız bir gamer.