PHP MySQL'e Bağlan
PHP 5 ve sonraki sürümleri, aşağıdakileri kullanarak bir MySQL veritabanıyla çalışabilir:
- MySQLi uzantısı ("i" gelişmiş anlamına gelir)
- PDO (PHP Veri Nesneleri)
PHP'nin önceki sürümleri MySQL uzantısını kullanıyordu. Ancak, bu uzantı 2012'de kullanımdan kaldırıldı.
MySQLi veya PDO Kullanmalı mıyım?
Kısa bir cevaba ihtiyacınız varsa, "Nasıl istersen" olurdu.
Hem MySQLi hem de PDO'nun avantajları vardır:
PDO 12 farklı veritabanı sistemi üzerinde çalışacak, MySQLi ise sadece MySQL veritabanları ile çalışacak.
Bu nedenle, projenizi başka bir veritabanı kullanmak için değiştirmeniz gerekiyorsa, PDO işlemi kolaylaştırır. Yalnızca bağlantı dizesini ve birkaç sorguyu değiştirmeniz gerekir. MySQLi ile tüm kodu yeniden yazmanız gerekecek - sorgular dahil.
Her ikisi de nesne yönelimlidir, ancak MySQLi ayrıca prosedürel bir API sunar.
Her ikisi de Hazırlanan Açıklamaları destekler. Hazırlanan İfadeler SQL enjeksiyonundan korur ve web uygulama güvenliği için çok önemlidir.
Hem MySQLi hem de PDO Sözdiziminde MySQL Örnekleri
Bu ve sonraki bölümlerde PHP ve MySQL ile çalışmanın üç yolunu gösteriyoruz:
- MySQLi (nesne yönelimli)
- MySQLi (yordamsal)
- PDO
MySQLi Kurulumu
Linux ve Windows için: MySQLi uzantısı çoğu durumda php5 mysql paketi kurulduğunda otomatik olarak kurulur.
Kurulum detayları için şu adrese gidin: http://php.net/manual/en/mysqli.installation.php
PDO Kurulumu
Kurulum detayları için şu adrese gidin: http://php.net/manual/en/pdo.installation.php
MySQL Bağlantısını Açın
MySQL veritabanındaki verilere erişmeden önce sunucuya bağlanabilmemiz gerekir:
Örnek (MySQLi Nesne Yönelimli)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Yukarıdaki nesne yönelimli örneğe dikkat edin:
$connect_error PHP 5.2.9 ve 5.3.0'a kadar bozuldu. 5.2.9 ve 5.3.0'dan önceki PHP sürümleriyle uyumluluğu sağlamanız gerekiyorsa, bunun yerine aşağıdaki kodu kullanın:
// Bağlantıyı kontrol edin
if (mysqli_connect_error()) {
die("Veritabanı bağlantısı başarısız: " .mysqli_connect_error());
}
Örnek (MySQLi Prosedürü)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Örnek (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Not: Yukarıdaki PDO örneğinde ayrıca bir veritabanı (myDB) belirledik . PDO, bağlanmak için geçerli bir veritabanı gerektirir. Veritabanı belirtilmezse, bir istisna atılır.
İpucu: PDO'nun büyük bir yararı, veritabanı sorgularımızda meydana gelebilecek sorunları çözmek için bir istisna sınıfına sahip olmasıdır. try{ } bloğu içinde bir istisna atılırsa, komut dosyası yürütmeyi durdurur ve doğrudan ilk catch(){ } bloğuna akar.
Bağlantıyı Kapat
Komut dosyası sona erdiğinde bağlantı otomatik olarak kapatılacaktır. Bağlantıyı daha önce kapatmak için aşağıdakileri kullanın:
MySQLi Nesne Yönelimli:
$conn->close();
MySQLi Prosedürü:
mysqli_close($conn);
PDO:
$conn = null;