PHP 8 ile MySQLi kullanarak MySQL veritabanından kayıt sorgulama işlemleri yapmak oldukça basit ve etkilidir. MySQLi hem nesne yönelimli hem de prosedürel olarak kullanılabilir. Aşağıda nesne yönelimli yaklaşımı örnekleyerek kayıt sorgulama işleminin nasıl yapıldığını göstereceğim.
Adım Adım MySQLi ile Kayıt Sorgulama
1. Veritabanı Bağlantısı Oluşturma
Öncelikle veritabanına bağlanmak için MySQLi kullanacağız:
<?php
$servername = "localhost"; // Veritabanı sunucusu
$username = "root"; // Veritabanı kullanıcı adı
$password = ""; // Veritabanı şifresi
$database = "my_database"; // Kullanılacak veritabanı
// 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ı!";
?>
Bu kod, MySQL veritabanına bir bağlantı kurar. Eğer bağlantı sırasında bir hata meydana gelirse, bir hata mesajı döndürür.
2. Kayıtları Sorgulama
Şimdi, veritabanından kayıt sorgulama işlemi yapalım. Örnek olarak users
tablosundan tüm kullanıcıları çeken bir sorgu çalıştıracağız:
<?php
// Sorguyu hazırlama
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql); // Sorguyu çalıştır
if ($result->num_rows > 0) {
// Veritabanındaki her satırı döngüyle al
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "Sonuç bulunamadı.";
}
$conn->close(); // Bağlantıyı kapat
?>
Açıklama:
-
$result
değişkenine atar. - $result->num_rows: Sorgudan dönen kayıt sayısını kontrol eder.
- $row = $result->fetch_assoc(): Her satırı bir ilişkisel dizi (array) olarak alır ve verileri ekrana yazdırır.
3. Hazırlıklı İfadeler (Prepared Statements) ile Güvenli Sorgulama
SQL enjeksiyon saldırılarına karşı korunmak için hazırlıklı ifadeler (prepared statements) kullanmak önemlidir. Kullanıcı girdilerine dayalı sorgular çalıştırıyorsanız bu yöntem daha güvenlidir.
Örneğin, belirli bir kullanıcıyı e-posta adresine göre sorgulayan bir hazırlıklı ifade örneği:
<?php
// Hazırlıklı ifade oluşturma
$stmt = $conn->prepare("SELECT id, name, email FROM users WHERE email = ?");
$email = "example@example.com"; // Aranan e-posta adresi
// E-postayı bağla (s: string)
$stmt->bind_param("s", $email);
// Sorguyu çalıştır
$stmt->execute();
// Sonuçları al
$result = $stmt->get_result();
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "Sonuç bulunamadı.";
}
$stmt->close(); // Hazırlıklı ifadeyi kapat
$conn->close(); // Bağlantıyı kapat
?>
Açıklama:
- $stmt = $conn->prepare(): Sorguyu hazırlıklı bir ifade olarak hazırlar.
- $stmt->bind_param(): Girilen veriyi yer tutucuya (burada "s" string türü için) bağlar.
- $stmt->execute(): Sorguyu çalıştırır.
- $stmt->get_result(): Sorgu sonucunu alır ve sonuçları işler.
4. Sonuçları Listeleme
Yukarıdaki örneklerde sorgu sonucundaki verileri ekrana yazdırdık. Eğer sonuçları HTML içinde bir tablo olarak listelemek isterseniz, aşağıdaki gibi bir yapı kullanabilirsiniz:
<?php
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table border='1'><tr><th>ID</th><th>Name</th><th>Email</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["id"]. "</td><td>" . $row["name"]. "</td><td>" . $row["email"]. "</td></tr>";
}
echo "</table>";
} else {
echo "Sonuç bulunamadı.";
}
$conn->close();
?>
Açıklama:
- HTML tablo etiketleri kullanılarak sorgu sonuçları bir tablo halinde ekrana basılır.
-
fetch_assoc()
fonksiyonu ile her satır, sütunlara ayrılarak tablo yapısında gösterilir.
Sonuç
PHP 8 ve MySQLi ile veritabanından kayıt sorgulama işlemi oldukça hızlı ve güvenlidir. Hazırlıklı ifadeler kullanarak güvenli sorgular yazabilir, veritabanındaki verileri dinamik olarak alabilirsiniz. Bu teknikler özellikle web projelerinde yaygın olarak kullanılır ve performans açısından da oldukça etkilidir.