
PHP MySQL Veritabanı Bağlantısı Nasıl Yapılır
İçindekiler
- bu-script’de-kullanılan-ana-yöntem mysqli_connect() metodudur.-bu-dahili-bir-php-fonksiyonudur,-daha-fazla-bilgi-için bu-bağlantıyı ziyaret-edin.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); } 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.eğer-bağlantı-başarılıysa,-kodun-sonraki-bölümü-çalıştırılacak: echo-"connected-successfully"; bu if ifadesi-içerdiğinden-önceki-hata-mesajı-yerine-basit-bir-şekilde-başarı-mesajı-gösterecektir.kodun-son-bölümü-ise: mysqli_close($conn); bunun-sayesinde-veritabanı-bağlantısını-manuel-olarak-kapatılabilir.-eğer-belirlenmemişse,-bağlantı-script-tamamlandığında-kendi-kendini-kapatacaktır.-bu-satırı-kullanarak-scriptin -tamamlanmasından-önce-bağlantıyı-kapatabilirsiniz.pdobir-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: connect_error)-{ die("connection-failed:-"-.-$conn->connect_error); } echo-"connected-successfully"; ?> adım-3-–-bağlantı-kontrolü-ve-yaygın-hata-çözümü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ümlemeeğ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ıyormysqli 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. 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.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.">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. 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 MySQLi PDO Adım 3 – Bağlantı kontrolü ve yaygın hata çözümü PHP MySQL Bağlantı Hatalarını Çözümleme Nelere ihtiyacınız olacakBu rehbere başlamadan önce aşağıdakilere sahip olmalısınız: Hosting kontrol paneli erişimi Adım 1 – Bir MySQL Veritabanı OluşturmaEğ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(); MySQLiAşağıda MySQLi kullanarak MySQL veri tabanına bağlantı oluşturmak için kullanılabilen basit bir PHP kodunu görüyoruz: Bu script’de kullanılan ana yöntem mysqli_connect() metodudur. Bu dahili bir PHP fonksiyonudur, daha fazla bilgi için bu bağlantıyı ziyaret edin.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); } 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.Eğer bağlantı başarılıysa, kodun sonraki bölümü çalıştırılacak: echo "Connected successfully"; Bu IF ifadesi içerdiğinden önceki hata mesajı yerine basit bir şekilde başarı mesajı gösterecektir.Kodun son bölümü ise: mysqli_close($conn); Bunun sayesinde veritabanı bağlantısını manuel olarak kapatılabilir. Eğer belirlenmemişse, bağlantı script tamamlandığında kendi kendini kapatacaktır. Bu satırı kullanarak scriptin tamamlanmasından önce bağlantıyı kapatabilirsiniz.PDOBir 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: connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?> Adım 3 – Bağlantı kontrolü ve yaygın hata çözümü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ümlemeEğ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ıyorMySQLi 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. 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.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.
- 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
- MySQLi
- PDO
- Adım 3 – Bağlantı kontrolü ve yaygın hata çözümü
- PHP MySQL Bağlantı Hatalarını Çözümleme
- Yanlış Şifre Hatası
- MySQL Sunucusuna Bağlanılamıyor
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.
Nelere ihtiyacınız olacak
Bu rehbere başlamadan önce aşağıdakilere sahip olmalısınız:
- Hosting kontrol paneli erişimi
Adım 1 – Bir MySQL Veritabanı Oluşturma
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();
MySQLi
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);
- ?>
Bu script’de kullanılan ana yöntem mysqli_connect() metodudur. Bu dahili bir PHP fonksiyonudur, daha fazla bilgi için bu bağlantıyı ziyaret edin.
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);
- }
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.
Eğer bağlantı başarılıysa, kodun sonraki bölümü çalıştırılacak:
- echo "Connected successfully";
Bu IF ifadesi içerdiğinden önceki hata mesajı yerine basit bir şekilde başarı mesajı gösterecektir.
Kodun son bölümü ise:
- mysqli_close($conn);
Bunun sayesinde veritabanı bağlantısını manuel olarak kapatılabilir. Eğer belirlenmemişse, bağlantı script tamamlandığında kendi kendini kapatacaktır. Bu satırı kullanarak scriptin tamamlanmasından önce bağlantıyı kapatabilirsiniz.
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";
- ?>
Adım 3 – Bağlantı kontrolü ve yaygın hata çözümü
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.
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.
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.