PHP ile veritabanı işlemleri genellikle CRUD (Create, Read, Update, Delete) işlemlerini içerir. Bu yazıda, CRUD işlemlerinin ilk adımı olan CREATE (Kayıt Ekleme) komutunun nasıl kullanılacağını anlatacağız. Özellikle MySQL veritabanını kullanarak, PHP ile nasıl yeni bir kayıt oluşturabileceğimizi inceleyeceğiz.
1. Veritabanına Bağlantı
Veritabanı işlemlerini yapabilmek için öncelikle PHP ile MySQL veritabanına bağlanmanız gerekir. Bunun için en yaygın yöntemlerden biri PDO (PHP Data Objects) kütüphanesini kullanmaktır. PDO, farklı veritabanlarına kolayca bağlanmamızı sağlayan güçlü ve güvenli bir yöntemdir.Aşağıda PHP ile PDO kullanarak MySQL veritabanına nasıl bağlanabileceğinizi gösteren bir örnek bulunmaktadır:
<?php
$host = 'localhost'; // Veritabanı sunucusu
$dbname = 'test_db'; // Veritabanı adı
$username = 'root'; // Veritabanı kullanıcı adı
$password = ''; // Veritabanı şifresi (boş ise "")
try {
// PDO ile veritabanına bağlanma
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
// Hata modu ayarlama (Exception, hataları yakalayabilmek için)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Veritabanına başarıyla bağlanıldı.";
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
?>
Bu kod, PHP ile MySQL veritabanına başarılı bir şekilde bağlanmamızı sağlar. Bağlantı kurulduktan sonra artık
CREATE
işlemi için adım atabiliriz.
2. Veritabanına Kayıt Ekleme (INSERT INTO)
Veritabanına yeni bir kayıt eklemek için
INSERT INTO
SQL komutunu kullanırız. Bu komut, belirttiğimiz tabloya yeni bir veri satırı ekler. Diyelim ki veritabanımızda aşağıdaki yapıya sahip bir users
tablosu var:ID | Name | |
---|---|---|
1 | Ali | ali@example.com |
2 | Ayşe | ayse@example.com |
PHP ile
users
tablosuna yeni bir kullanıcı eklemek için adım adım aşağıdaki işlemleri yapabiliriz.
HTML Formu ile Kayıt Verilerini Alma
Kullanıcıdan yeni kayıt bilgilerini almak için bir HTML formu oluşturalım:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kullanıcı Ekleme</title>
</head>
<body>
<h2>Yeni Kullanıcı Ekle</h2>
<form action="create.php" method="POST">
<label for="name">Ad:</label>
<input type="text" name="name" id="name" required><br>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required><br>
<input type="submit" value="Ekle">
</form>
</body>
</html>
PHP ile Form Verilerini Veritabanına Ekleme
Formdan gelen bilgileri alıp veritabanına kaydedecek olan
create.php
dosyasını oluşturalım:<?php
// Veritabanı bağlantısı
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
// Formdan gelen verileri al
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
// SQL sorgusu (INSERT INTO)
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
// Verileri güvenli bir şekilde yerleştirmek için hazırlanan sorgu (prepared statement) kullanıyoruz
$stmt = $pdo->prepare($sql);
// Parametreleri bağla
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
// Sorguyu çalıştır
if ($stmt->execute()) {
echo "Yeni kullanıcı başarıyla eklendi!";
} else {
echo "Kullanıcı eklenirken bir hata oluştu.";
}
}
?>
3. Kayıt Ekleme İşleminin Açıklaması
PDO ile Veritabanına Bağlantı
PHP PDO kullanarak veritabanına bağlantı kuruyoruz. Bu bağlantı kurulduktan sonra, form verilerini alıp işleyerek veritabanına kayıt ekleme işlemi gerçekleştirebiliriz.
Formdan Gelen Verilerin İşlenmesi
$_POST
süper global değişkeniyle formdan gelen verileri alıyoruz. Kullanıcının formda doldurduğu "name" ve "email" bilgileri PHP tarafından alınarak SQL sorgusunda kullanılmak üzere işlenir.
Prepared Statement Kullanımı
Veritabanı sorgularında Prepared Statements kullanmak, hem performans artışı sağlar hem de SQL enjeksiyonu gibi güvenlik açıklarını engeller.
bindParam()
metodu ile SQL sorgusundaki placeholder’ları (örn. :name
ve :email
) form verileriyle dolduruyoruz.
Sorgunun Çalıştırılması
$stmt->execute()
ile sorgu çalıştırılır ve kullanıcı veritabanına eklenir. Eğer sorgu başarılı olursa "Yeni kullanıcı başarıyla eklendi!" mesajı görüntülenir.
4. Güvenlik Önlemleri
Veritabanı işlemleri yaparken güvenliğe dikkat etmek çok önemlidir. Aşağıda dikkat edilmesi gereken birkaç önemli güvenlik önerisi yer almaktadır:
- SQL Enjeksiyonu Önleme: Veritabanına doğrudan kullanıcı verisi eklerken SQL enjeksiyonuna karşı korunmak için Prepared Statements (hazırlanan sorgular) kullanmak çok önemlidir.
- Form Doğrulama: PHP ile sunucu tarafında kullanıcı tarafından gönderilen verilerin doğruluğunu kontrol edin (örneğin, boş alan kontrolü, e-posta formatı doğrulama gibi).
- Veri Türü Kontrolü: Veritabanına eklemeden önce formdan gelen verilerin doğru türde ve formatta olduğundan emin olun.
Sonuç
Bu makalede, PHP ile veritabanında kayıt ekleme işlemini yaniCREATE
komutunun nasıl kullanılacağını öğrendik. PDO ile güvenli bir şekilde veritabanına bağlandık ve hazırlanan sorgular ile yeni kayıt ekledik. Bu temel bilgilerle PHP ve MySQL kullanarak daha karmaşık veritabanı işlemleri gerçekleştirebilirsiniz. CRUD işlemlerinin diğer adımları olan Read, Update, Delete
işlemleri de benzer bir mantıkla çalışır ve ilerleyen süreçlerde bu işlemleri de öğrenebilirsiniz.