Php 8 SQL Connection

Php 8 SQL Connection

PHP 8 ile MySQL veritabanına bağlantı kurmak için en yaygın kullanılan iki yöntem şunlardır: PDO (PHP Data Objects) ve MySQLi (MySQL Improved). Aşağıda her iki yöntemi de anlatacağım.

1. PDO ile MySQL Bağlantısı

PDO, PHP’de farklı veritabanı türlerini destekleyen bir arayüzdür. Hem MySQL hem de diğer veritabanlarına bağlanmak için kullanılabilir. PDO ayrıca daha güvenli parametreli sorgular ile SQL enjeksiyon riskini azaltır.

PDO Kullanarak MySQL Bağlantısı:

<?php $host = 'localhost'; $db = 'veritabani_adi'; $user = 'root'; $pass = 'sifre'; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; // DSN (Data Source Name) $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Hataları göster PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Sonuçları dizi olarak döndür PDO::ATTR_EMULATE_PREPARES => false, // Gerçek hazırlıklı ifadeleri kullan ]; try { $pdo = new PDO($dsn, $user, $pass, $options); // PDO nesnesini başlat echo "Veritabanına başarıyla bağlanıldı!"; } catch (PDOException $e) { // Bağlantı hatasını yakala ve göster throw new PDOException($e->getMessage(), (int)$e->getCode()); } ?>

Açıklama:

  • $dsn: Bağlantı bilgilerini içeren DSN (Data Source Name) dizgesidir. Burada MySQL sunucusunun adresi (host), veritabanı adı (dbname) ve karakter seti (charset) tanımlanır.
  • $options: PDO bağlantısının davranışını kontrol eden ayarlardır. Hata ayıklama ve sorgu sonuçlarını nasıl alacağımız gibi ayarları belirleriz.
  • try-catch bloğu: Veritabanı bağlantısında hata olursa, bu hatayı yakalayıp ekrana basarız.

PDO ile Sorgu Çalıştırma:

<?php // Basit bir veri sorgusu $sql = "SELECT * FROM users"; $stmt = $pdo->query($sql); // Sorguyu çalıştır while ($row = $stmt->fetch()) { echo $row['name'] . "<br>"; // Kullanıcı isimlerini göster } ?>

2. MySQLi ile MySQL Bağlantısı

MySQLi sadece MySQL veritabanı ile çalışır ve hem nesne yönelimli hem de prosedürel (fonksiyonel) şekilde kullanılabilir.

MySQLi Nesne Yönelimli Kullanımı:

<?php $servername = "localhost"; $username = "root"; $password = "sifre"; $database = "veritabani_adi"; // Bağlantı oluştur $conn = new mysqli($servername, $username, $password, $database); // Bağlantı kontrolü if ($conn->connect_error) { die("Bağlantı başarısız: " . $conn->connect_error); } echo "Veritabanına başarıyla bağlanıldı!"; ?>

MySQLi ile Sorgu Çalıştırma:

<?php $sql = "SELECT * FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // Sonuçları satır satır al while($row = $result->fetch_assoc()) { echo "Kullanıcı: " . $row["name"] . "<br>"; } } else { echo "Sonuç yok"; } $conn->close(); // Bağlantıyı kapat ?>

3. Bağlantı Güvenliği

  • Hazırlıklı ifadeler kullanarak (Prepared Statements) SQL enjeksiyondan korunabilirsiniz. Hazırlıklı ifadeler hem PDO hem de MySQLi ile kullanılabilir.

PDO Hazırlıklı İfade Örneği:

<?php $sql = "SELECT * FROM users WHERE email = :email"; $stmt = $pdo->prepare($sql); $stmt->execute(['email' => $email]); // :email yer tutucuya veri bağla $users = $stmt->fetchAll(); ?>

MySQLi Hazırlıklı İfade Örneği:

<?php $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?"); $stmt->bind_param("s", $email); // "s" string türünü belirtir $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row['name']; } ?>

Sonuç

PHP 8 ile hem PDO hem de MySQLi kullanarak MySQL veritabanına güvenli bir şekilde bağlanabilir ve sorgular çalıştırabilirsiniz. PDO çok yönlü olup farklı veritabanlarını da desteklerken, MySQLi sadece MySQL için optimize edilmiştir. Projenize en uygun yöntemi seçerek güvenli ve etkili veritabanı işlemleri gerçekleştirebilirsiniz.



Yorum Ekle

Üzerine gel