Merhaba, PHP MySQL Bağlantısı Kurmak yazım ile devam ediyorum. Geçen yazımda php ile programlamaya başlarken gereken bilgilerden bahsetmiştim. Bu yazımda da PHP kullanarak MySQL veri tabanına nasıl bağlantı yapacağımızı göstereceğim.
Arkadaşlar. php temel programlama bilgisi vermek ile uğraşamayacağım gerçekten. Çünkü temel programlama neredeyse her dilde aynı. Değişen şey syntax oluyor. Burada verebileceğim en temel bilgi değişkenlerde tip belirtmemize gerek yok ve $ işaretini sevmemiz gerektiğidir. :D
Ayrıca IDE olarak Visual Studio Code kullanıyorum.
PHP MySQL Bağlantısı Kurmak
Önceki yazımda mysql kullandığımı belirtmiştim. Şimdi gelelim php veri tabanı bağlantısını nasıl yapacağımıza.
Her zaman ki gibi önce bir class tanımlayacağız. PHP class nasıl tanımlanır? Aşağıda görebilirsiniz.
DataBaseSystem.php
Bir php dosyası açalım ve adını DataBaseSystem.php yapalım. Benim verdiğim isim bu arkadaşlar. Siz istediğiniz ismi verebilirsiniz. Aşağıda kodları görebilirsiniz. Kodların anlatımını da yapacağım.
<?php ini_set('display_errors', 1); error_reporting(E_ALL); class DataBaseSystem { var $server = "localhost"; var $username = "root"; var $password = "a123456"; var $dbname = "db"; var $connect; var $sql_error = ""; function __construct() { $this->ConnectDB(); } function ConnectDB() { if ($_SERVER["SERVER_NAME"] == "localhost") { $this->server = "localhost"; $this->username = "root"; $this->password = "a123456"; $this->dbname = "dbname1"; } else { $this->server = "localhost"; $this->username = "root"; $this->password = "a123456aweqwewer'^+"; $this->dbname = "dbname2"; } try { $dsn = "mysql:host=" . $this->server . ";dbname=" . $this->dbname . ";charset=utf8;"; $this->connect = new \PDO( $dsn, $this->username, $this->password ); $this->connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (\PDOException $e) { $error = "Error Code: " . (int)$e->getCode() . "<br/> Error Message: " . $e->getMessage(); return $error; exit(); } } }
İlk iki satırda burada çıkan hataları ekrana bas demiş oluyoruz. Devamında bir class oluşturup var ile değişkenlerimizi tanımlıyoruz. __construct metodumuzda ConnectDB metodumuzu çağırıyoruz. Ben kodları direk constructor metoduna yazmak istemediğim için bu şekilde yaptım. ConnectDB metodumuzda bağlantıyı gerçekleştireceğiz.
ConnectDB metodumuzda bir if görüyorsunuz. Burada ben hem localde hem de hosting’de denemeler yaptığımdan sürekli bu bilgileri değiştirmek zorunda kalıyordum. Bu sebeple nerede çalıştığıma göre otomatik olarak bilgileri değiştirilmesini sağlamış oldum.
$_SERVER[“SERVER_NAME”] komutu bize domain’i com ve www olmadan verir. https://mustafabukulmez.com/ ‘u mustafabukulmez olarak verir yani.
Burada eski bir teknoloji olan mysqli değil PDO ‘yu kullanarak bağlanıyoruz. Diğer işlemleri de PDO ile yapacağız. PDO kullanarak bağlantımızı yapmak için connection string’i hazırladıktan sonra new PDO ile bağlantıyı kurup $connect değişkenine bağlantımızı atıyoruz.
NOT: PHP değişlen tipleri belirtmenize gerek yok. Bir değişkene o anda ne ataması yaptıysanız tipi de o oluyor.
SettAttribute ile hata yönetimi ile ilgili iki attribute ekliyoruz. Kodlarımız bir try içerisinde olduğundan catch kısmında da hatayı yakalıyoruz. Exit() komutu ile de hata çıkarsa kodların çalışmasını durduruyoruz.
ImportClasses.php
Şimdi sadece bu şekilde bırakmıyoruz. Bir dosya daha açalım ve adına da ImportClasses.php diyelim. Hazırladığımız class’ları bu dosyada çağıracağız. Sonra bu dosyayı da başka bir dosyadan çağıracağız.
<?php include_once($_SERVER['DOCUMENT_ROOT'] ."/Ders2/". "DataBaseSystem.php"); $DB = new DataBaseSystem(); // $_SERVER['DOCUMENT_ROOT'] bize www klasörünü veriyor. // Örneğin biz şuan C:/wamp64/www/ içindeyiz.
Şu anda class dosyamızı import etmiş olduk. Proje genişledikçe haliyle burası da büyüyecek. O yüzden ayrı bir dosyada tutmak istedik. Yoksa her sayfaya tek tek bunları eklemek zorunda kalacaktık.
Her zaman en kısa yol, her zaman en az kod, her zaman minimum efor, her zaman maksimum etki. Amacımız hep bu :)
index.php
Son olarak bir index.php hazırlayalım. Burada DataBaseSystem class dosyamızdaki connect değişkenine erişelim ve bağlantının sağlanıp sağlanmadığına bakalım.
<?php include_once($_SERVER['DOCUMENT_ROOT'] . "/Ders2/" . "ImportClasses.php"); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> <meta name="author" content="Mustafa BÜKÜLMEZ"> <title> Mustafa Bükülmez PHP Dersleri</title> </head> <body> <?php if ($DB->connect) echo "Connection OK"; else echo "Connection ERROR"; ?> </body> </html>
Gördüğünüz gibi en üst satırda ImportClasses.php dosyamızı import ettik. Body kısmına geldiğimizde gördüğünüz gibi DB üzerinden connect değişkenine erişebiliyoruz.
Evet bütün kodlarımız bu kadardı. Şimdi genel bir tekrar yapalım….
Neler Yaptık?
- DataBaseSystem.php adında bir dosya açtık ve bağlantı kodlarımızı bu dosya içerisine yazdık.
- Bu dosyamız bir class’tır.
- Try Catch ile varsa ekrana basmasını ve çalışmayı durdurmasını söyledik
- ImportClasses.php adında bir dosya açtık. bu dosyayı hazırladığımız class dosyalarımızı import etmek için kullanacağız.
- DataBaseSystem.php dosyamızı bu dosyada import ettik.
- Başka ne kadar class yazarsak hepsini bu dosyaya import edeceğiz.
- index.php adında bir dosya açtık. Bu bizim başlangıç dosyamızdır.
- Dosyanın en başında ImportClasses.php dosyasını import ettik.
- Böylece DataBaseSystem.php dosyasını da import etmiş oluyoruz.
- Body kısmında da DataBaseSystem.php dosyamızda yer alan connect adlı değişkene ulaşarak bağlantı sağlamışsa OK yazmasını sağladık. Ekran görüntüsünde de görebiliyorsunuz.
PHP MySQL Bağlantısı Kurmak yazımda bu kadardı. Diğer yazılarımda görüşmek üzere. PHP derslerinde verdiğim kodları, github’da C# tarafında yaptığım dersler uygulaması gibi bir şey yaparım. Görüşürüz.
PHP Dersleri için başlattığım repoya bağlantıya tıklayarak ulaşabilirsiniz. Bu Ders2 idi. Dersin kodları burada… :) Tüm PHP yazılarım için tıklayabilirsiniz. Discord’a katılmayı unutmayın.
Kodla kalın. :)