Giriş
Eğer web geliştirme öğrenmeye yeni başlayan biriyseniz bu rehber sizin için oldukça faydalı olacak. Bu rehberi sayesinde PHP MySQL veri tabanı bağlantısı nasıl yapılır öğreneceksiniz. Farklı şekilde oluşturduğunuz tabloları yönetmek, düzenlemek, görüntülemek veya silmek istiyorsanız bunu nasıl yapacağınızı bilmeniz gerekiyor.
Bu rehbere başlamadan önce aşağıdakilere sahip olmalısınız:
Eğer henüz bir MySQL veri tabanı oluşturmadıysanız bu adım gereklidir. Hostinger’da MySQL Veritabanları bölümünü kullanarak kolayca MySQL veri tabanı oluşturabilirsiniz. Cpanel üzerinde nasıl bir MySQL veri tabanı oluşturabileceğinizi öğrenmek için bu rehbere göz atın.
MySQL Veritabanları bölümünü açtıktan sonra gerekli bilgileri girin ve Oluştur butonuna tıklayın.
ÖNEMLİ: Oluşturduğunuz MySQL veritabanı bilgilerini bir köşeye yazın. Sıradaki adımda onlara ihtiyacınız olacak.
Adım 2 – MySQL Veritabanı bağlantısı için PHP kodu yazma
Örneğimizde u613750452_name isimli veri tabanına bağlanıyor olacağız ve bu veri tabanımız u613750452_user kullanıcısıyla bağdaştırılmış. Veritabanı için bir de şifre belirlemelisiniz, biz buystuffpwd olarak belirledik.
Bahsetmeye değer bir diğer şey ise doğru bir sunucu adı veya host adınız olmalı. Hostinger’da MySQL host adı MySQL Veritabanları bölümünde bulunur. Örneğimizde mysql.hostinger.com olarak belirlenmiş.
Bir veritabanına yerel olarak bağlanırken (veritabanına bağlanmakta olan script, veritabanının barındığı sunucuya yüklenir) çoğu zaman localhost kullanabilirsiniz. Eğer bu çalışmazsa veya veritabanına uzaktan bağlanıyorsanız (örneğin kendi bilgisayarınız), sunucunun IP adresini kullanmanız gerekiyor. Daha fazla bilgi için hosting sağlayıcınızla irtibata geçerek hostname olarak kullanacağınız bilgileri edinebilirsiniz.
PHP ile bir SQL veritabanına bağlanmanın iki yöntemi bulunuyor, MySQLi ve PDO. En önemli değişikliklerden birisi, ikisininde veritabanına değişiklik yaparken SQL injection saldırılarını ortadan kaldırmayı sağlayan ‘prepared statements’ desteği sağlaması. Orjinal ‘mysql_’ fonksiyonları deprecated (artık kullanılmayan) olduğundan güvenli olmaması ve artık geliştirilmemesi sebebiyle kullanılmamalıdır.
MySQLi açılımı MySQL Improved yani, Geliştirilmişdir ve MySQL arayüzüne yeni özellikler getirmiştir. PDO ise PHP Data Object olarak açılır. PDO ve MySQLi arasındaki başlıca fark PDO’nun aynı script içinde birden fazla farklı veri tabanını (MySQL, MS SQL, Postgre DB) desteklemesidir ancak fonksiyonlarla alakalı olarak sadece bir defa veri yazmanız gerekiyor. PDO ‘object oriented’, Türkçe olarak ‘Nesne Yönelimli’ yani veri tabanı bağlantısı değişken bir obje oluşturarak sağlanır:
Aşağıda MySQLi kullanarak MySQL veri tabanına bağlantı oluşturmak için kullanılabilen basit bir PHP kodunu görüyoruz:
Kodumuzun hemen en başında birkaç değişken deklorasyonu 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 mysqli_connect() fonksiyonu içinde bu değişkenleri ilgili fonksiyona geçiriyoruz.
Sonraki adım mysqli_connect() fonksiyonu, bu sayede sağlanan detaylarla veritabanına bağlantı kuruyoruz ve sonraki bölümde kod mysqli_connect() fonksiyonunun başarısına bağlı olarak çalıştırılıyor. Gördüğünüz gibi, eğer bağlantımız kurulamazsa aşağıdaki mesajı bize gösterecek:
Eğer bağlantı başarılıysa, kodun sonraki bölümü çalıştırılacak:
Kodun son bölümü ise:
PDO
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. DSN aşağıdaki kod içinde görüleceği üzere gerçek PDO objesini oluştururken parametre olarak kullanılacak olan basit bir değişken olabilir.
PDO, farklı birden fazla veritabanını destekler ve DSN, ‘mysql:’ satırını diğer veri tabanı syntax’ı ile değiştirerek, değişimli bağlantıları tanımlar. Gerçek bir script’te kullanıcıya istediği bağlantıyı seçmesini ve gerekli DSN değişkenini seçme kodunu yazma izni verebilirsiniz. Biz bu rehberde sadece MySQL kullanıyoruz.
Veritabanı bağlantısını temsil eden PDO objesi oluştururken, ‘try… catch…’ kodu içine alabilirsiniz. Bunun anlamı script’in verilen kodu kullanarak bağlantı kurmaya çalışır ve eğer bir problem oluşursa ‘catch’ bölümündeki kod çalıştırılır. Catch bloklama kullanarak hata mesajlarını gösterebilir veya deneme başarısız olursa alternatif bir kod çalıştırabilirsiniz. Örneğimizde hangi bilgi parçasının yanlış olduğunu size söyleyen basit bir hata mesajı bulunuyor:
Eğer PHP bağlantı kodu başarılı bir şekilde çalışır ve bağlantı sorunsuz oluşturulursa, internet sitenizde aşağıdaki script’i görüntülersiniz:
PHP MySQL Bağlantı Hatalarını Çözümleme
Eğer bağlantı başarısız olmuşsa, farklı birşey görürsünüz. MySQLi ve PDO için hatalar biraz farklı olacaktır.
Yanlış Şifre Hatası
Örneğin PHP kodundaki şifreyi biraz değiştirirsek (veritabanındaki gerçeğini değiştirmeden).
MySQLi Hatası:
PDO Hatası:
Yani bu mesajı görüyorsanız, yapmanız gereken ilk şey veritabanı bilgilerini kontrol etmek. Bu hatanın ortaya çıkmasının bir diğer sebebi veritabanına bir kullanıcı belirtmemiş olmanız olabilir. Hostinger kontrol paneli söz konusu olduğunda MySQL Vertabanları bölümündeki veritabanınız aşağıdaki gibi görünmelidir:
Cpanel durumunda ise, veritabanınız aşağıdaki gibi görünmelidir:
MySQL Sunucusuna Bağlanılamıyor
MySQLi hatası:
‘Sunucu’ üzerinde MySQL sunucusuna bağlanılamıyor (110) anlamı script’in bir sunucudan cevap alamamasıdır. Bunun sebebi sunucu adı olarak localhost yerine server belirtmiş olmamızdır ve dolayısıyla isim tanınamıyor.
PDO hatası:
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.
Bu dosyanın içerisinde script’in oluşturduğu muhtemel hataları görerek bu sayede hatayı kolayca çözümleyebilirsiniz.
Sonuç
Bu rehberde veritabanları ve PHP Data Objects (PDO) ile MySQLi kullanarak MySQL bağlantısının nasıl yapılacağı hakkında bazı temel bilgiler sunduk. Öğ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 web geliştirme öğrenmeye yeni başlayan biriyseniz bu rehber sizin için oldukça faydalı olacak. Bu rehberi sayesinde PHP MySQL veri tabanı bağlantısı nasıl yapılır öğreneceksiniz. Farklı şekilde oluşturduğunuz tabloları yönetmek, düzenlemek, görüntülemek veya silmek istiyorsanız bunu nasıl yapacağınızı bilmeniz gerekiyor.
- Nelere ihtiyacınız olacak
- Adım 1 – Bir MySQL Veritabanı Oluşturma
- Adım 2 – MySQL Veritabanı bağlantısı için PHP kodu yazma
- PDO
- Adım 3 – Bağlantı kontrolü ve yaygın hata çözümü
Bu rehbere başlamadan önce aşağıdakilere sahip olmalısınız:
- Hosting kontrol paneli erişimi
Eğer henüz bir MySQL veri tabanı oluşturmadıysanız bu adım gereklidir. Hostinger’da MySQL Veritabanları bölümünü kullanarak kolayca MySQL veri tabanı oluşturabilirsiniz. Cpanel üzerinde nasıl bir MySQL veri tabanı oluşturabileceğinizi öğrenmek için bu rehbere göz atın.

MySQL Veritabanları bölümünü açtıktan sonra gerekli bilgileri girin ve Oluştur butonuna tıklayın.

ÖNEMLİ: Oluşturduğunuz MySQL veritabanı bilgilerini bir köşeye yazın. Sıradaki adımda onlara ihtiyacınız olacak.
Adım 2 – MySQL Veritabanı bağlantısı için PHP kodu yazma
Örneğimizde u613750452_name isimli veri tabanına bağlanıyor olacağız ve bu veri tabanımız u613750452_user kullanıcısıyla bağdaştırılmış. Veritabanı için bir de şifre belirlemelisiniz, biz buystuffpwd olarak belirledik.
Bahsetmeye değer bir diğer şey ise doğru bir sunucu adı veya host adınız olmalı. Hostinger’da MySQL host adı MySQL Veritabanları bölümünde bulunur. Örneğimizde mysql.hostinger.com olarak belirlenmiş.
Bir veritabanına yerel olarak bağlanırken (veritabanına bağlanmakta olan script, veritabanının barındığı sunucuya yüklenir) çoğu zaman localhost kullanabilirsiniz. Eğer bu çalışmazsa veya veritabanına uzaktan bağlanıyorsanız (örneğin kendi bilgisayarınız), sunucunun IP adresini kullanmanız gerekiyor. Daha fazla bilgi için hosting sağlayıcınızla irtibata geçerek hostname olarak kullanacağınız bilgileri edinebilirsiniz.
PHP ile bir SQL veritabanına bağlanmanın iki yöntemi bulunuyor, MySQLi ve PDO. En önemli değişikliklerden birisi, ikisininde veritabanına değişiklik yaparken SQL injection saldırılarını ortadan kaldırmayı sağlayan ‘prepared statements’ desteği sağlaması. Orjinal ‘mysql_’ fonksiyonları deprecated (artık kullanılmayan) olduğundan güvenli olmaması ve artık geliştirilmemesi sebebiyle kullanılmamalıdır.
MySQLi açılımı MySQL Improved yani, Geliştirilmişdir ve MySQL arayüzüne yeni özellikler getirmiştir. PDO ise PHP Data Object olarak açılır. PDO ve MySQLi arasındaki başlıca fark PDO’nun aynı script içinde birden fazla farklı veri tabanını (MySQL, MS SQL, Postgre DB) desteklemesidir ancak fonksiyonlarla alakalı olarak sadece bir defa veri yazmanız gerekiyor. PDO ‘object oriented’, Türkçe olarak ‘Nesne Yönelimli’ yani veri tabanı bağlantısı değişken bir obje oluşturarak sağlanır:
- $my_Object = new OBJECT();
Aşağıda MySQLi kullanarak MySQL veri tabanına bağlantı oluşturmak için kullanılabilen basit bir PHP kodunu görüyoruz:
- <?php
- $servername = "mysql.hostinger.com";
- $database = "u613750452_name";
- $username = "u613750452_user";
- $password = "buystuffpwd";
- // 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);
- ?>
Kodumuzun hemen en başında birkaç değişken deklorasyonu 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 mysqli_connect() fonksiyonu içinde bu değişkenleri ilgili fonksiyona geçiriyoruz.
Sonraki adım mysqli_connect() fonksiyonu, bu sayede sağlanan detaylarla veritabanına bağlantı kuruyoruz ve sonraki bölümde kod mysqli_connect() fonksiyonunun başarısına bağlı olarak çalıştırılıyor. Gördüğünüz gibi, eğer bağlantımız kurulamazsa aşağıdaki mesajı bize gösterecek:
- if ($conn->connect_error) {
- die("Connection failed: " . $conn->connect_error);
- }
Eğer bağlantı başarılıysa, kodun sonraki bölümü çalıştırılacak:
- echo "Connected successfully";
Kodun son bölümü ise:
- mysqli_close($conn);
PDO
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. DSN aşağıdaki kod içinde görüleceği üzere gerçek PDO objesini oluştururken parametre olarak kullanılacak olan basit bir değişken olabilir.
PDO, farklı birden fazla veritabanını destekler ve DSN, ‘mysql:’ satırını diğer veri tabanı syntax’ı ile değiştirerek, değişimli bağlantıları tanımlar. Gerçek bir script’te kullanıcıya istediği bağlantıyı seçmesini ve gerekli DSN değişkenini seçme kodunu yazma izni verebilirsiniz. Biz bu rehberde sadece MySQL kullanıyoruz.
Veritabanı bağlantısını temsil eden PDO objesi oluştururken, ‘try… catch…’ kodu içine alabilirsiniz. Bunun anlamı script’in verilen kodu kullanarak bağlantı kurmaya çalışır ve eğer bir problem oluşursa ‘catch’ bölümündeki kod çalıştırılır. Catch bloklama kullanarak hata mesajlarını gösterebilir veya deneme başarısız olursa alternatif bir kod çalıştırabilirsiniz. Örneğimizde hangi bilgi parçasının yanlış olduğunu size söyleyen basit bir hata mesajı bulunuyor:
- <?php
- $servername = "mysql.hostinger.com";
- $username = "u613750452_user";
- $database = "u613750452_name";
- $password = "buystuffpwd";
- // Create a new connection to the MySQL database using PDO
- $conn = new mysqli($servername, $username, $password);
- // Check connection
- if ($conn->connect_error) {
- die("Connection failed: " . $conn->connect_error);
- }
- echo "Connected successfully";
- ?>
Eğer PHP bağlantı kodu başarılı bir şekilde çalışır ve bağlantı sorunsuz oluşturulursa, internet sitenizde aşağıdaki script’i görüntülersiniz:

PHP MySQL Bağlantı Hatalarını Çözümleme
Eğer bağlantı başarısız olmuşsa, farklı birşey görürsünüz. MySQLi ve PDO için hatalar biraz farklı olacaktır.
Yanlış Şifre Hatası
Örneğin PHP kodundaki şifreyi biraz değiştirirsek (veritabanındaki gerçeğini değiştirmeden).
MySQLi Hatası:

PDO Hatası:

Yani bu mesajı görüyorsanız, yapmanız gereken ilk şey veritabanı bilgilerini kontrol etmek. Bu hatanın ortaya çıkmasının bir diğer sebebi veritabanına bir kullanıcı belirtmemiş olmanız olabilir. Hostinger kontrol paneli söz konusu olduğunda MySQL Vertabanları bölümündeki veritabanınız aşağıdaki gibi görünmelidir:

Cpanel durumunda ise, veritabanınız aşağıdaki gibi görünmelidir:

MySQL Sunucusuna Bağlanılamıyor
MySQLi hatası:

‘Sunucu’ üzerinde MySQL sunucusuna bağlanılamıyor (110) anlamı script’in bir sunucudan cevap alamamasıdır. Bunun sebebi sunucu adı olarak localhost yerine server belirtmiş olmamızdır ve dolayısıyla isim tanınamıyor.
PDO hatası:

- [HY000] genel hata anlamına gelir.
- [2002] ise Yerel MySQL sunucusuna bağlanılamıyor anlamına gelir. Mesajın geri kalanı daha fazla bilgi verir, ‘host’ bulunamaması gibi.
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.
Bu dosyanın içerisinde script’in oluşturduğu muhtemel hataları görerek bu sayede hatayı kolayca çözümleyebilirsiniz.
Sonuç
Bu rehberde veritabanları ve PHP Data Objects (PDO) ile MySQLi kullanarak MySQL bağlantısının nasıl yapılacağı hakkında bazı temel bilgiler sunduk. Öğ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.