Web uygulamalarında kullanıcıdan alınan verilerin veritabanına kaydedilmesi oldukça yaygın bir işlemdir. Bu yazıda PHP ile oluşturduğumuz formdan gelen verileri MySQL veritabanına nasıl güvenli ve doğru şekilde kaydedeceğimizi adım adım anlatacağız.
Fakat bunlara girmeden önce MySQL nedir? veritabanı nedir? Bunlara kısaca değinerek bilgilerimizi pekiştirelim. MySQL, bir veritabanı yönetim sistemidir. Şöyle düşünelim: Bilgisayarında dosyaları düzenlemek için klasörler kullanırız, MySQL de bu bilgileri düzenleyen bir aracıdır. Veritabanı ise her türlü bilgiyi düzenli şekilde saklayan dev bir akıllı dolap gibi düşünebiliriz.
MySQL ve veritabanı mantığını kavradıysak PHP ile olan etkileşimine geri dönebiliriz.
Elinizde bir website, veritabanı yani hiçbir şey yoksa hiç endişelenmeyin. XAMPP programıyla bilgisayarınızda localhost üzerinden bir web sitesi çalıştırabilirsiniz ve üzerinde MySQL ile işlem yapabilirsiniz. Nasıl yapılacağı hakkında bilgisi olmayan arkadaşlar BURAYA tıklayarak bilgi edinebilirler.
PHP ile Form Verilerini Veritabanına Kaydetme
PHP’nin bağlanacağı bir veritabanı ve tablo oluşturmamız gerekiyor. Aşağıdaki SQL komutlarını phpMyAdmin veya MySQL terminalinden çalıştıralım. Peki bu yazacağımız kod nedir ve ne işe yarıyor?
formornek
adında bir veritabanı ve kullanicilar
adında bir tablo oluşturuyoruz. PHP ile oluşturduğumuz form üzerinden isim
, email
, yas
gibi veriler bu formdan gelecek.
1 2 3 4 5 6 7 8 9 10 11 | CREATE DATABASE formornek; USE formornek; CREATE TABLE kullanicilar ( id INT AUTO_INCREMENT PRIMARY KEY, isim VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, yas INT NOT NULL, kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); |
PHP dosyamızın, MySQL veritabanıyla bağlantı kurabilmesi için bağlantı kodlarını yazmamız gerekmekte. baglanti.php
adında bir dosya oluşturalım ve kod içeriği de şu şekilde olsun:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $host = "localhost"; $kullanici = "root"; $sifre = ""; $veritabani = "formornek"; $baglanti = new mysqli($host, $kullanici, $sifre, $veritabani); if ($baglanti->connect_error) { die("Bağlantı hatası: " . $baglanti->connect_error); } ?> |
Asıl işi yapacak koda gelelim. Bu hazırlayacağımız kodda, form verilerini okuyarak veritabanı üzerine kaydını gerçekleştireceğiz. Dosyamızın adını kaydet.php
olarak isimlendirelim ve kod içeriği de şu şekilde olacak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php require_once 'baglanti.php'; if ($_SERVER["REQUEST_METHOD"] == "POST") { $isim = htmlspecialchars(trim($_POST['isim'])); $email = htmlspecialchars(trim($_POST['email'])); $yas = intval($_POST['yas']); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { die("Geçersiz e-posta!"); } $sorgu = $baglanti->prepare("INSERT INTO kullanicilar (isim, email, yas) VALUES (?, ?, ?)"); $sorgu->bind_param("ssi", $isim, $email, $yas); if ($sorgu->execute()) { echo "Kayıt başarıyla eklendi!"; } else { echo "Kayıt eklenemedi: " . $baglanti->error; } $sorgu->close(); $baglanti->close(); } ?> |
Ve son olarakta HTML kodumuzu hazırlayacağız. form.html adında bir dosya oluşturalım. Aşağıda bulunan kodda örnek olarak PHP bağlantısıyla oluşturulmuş ve CSS özelleştirilmesi yapılmış form kodunu kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>PHP Form Örneği</title> <style> body { font-family: Arial, sans-serif; background: #f4f4f4; padding: 40px; } form { background: white; padding: 20px; border-radius: 8px; width: 400px; margin: auto; box-shadow: 0 0 10px rgba(0,0,0,0.1); } label { display: block; margin-top: 15px; font-weight: bold; } input[type="text"], input[type="email"], input[type="number"] { width: 100%; padding: 10px; margin-top: 5px; border: 1px solid #ccc; border-radius: 5px; } input[type="submit"] { margin-top: 20px; background: #28a745; color: white; border: none; padding: 12px; width: 100%; border-radius: 5px; font-size: 16px; cursor: pointer; } input[type="submit"]:hover { background: #218838; } </style> </head> <body> <form action="kaydet.php" method="POST"> <h2>Bilgilerinizi Girin</h2> <label for="isim">İsim:</label> <input type="text" id="isim" name="isim" required> <label for="email">E-posta:</label> <input type="email" id="email" name="email" required> <label for="yas">Yaş:</label> <input type="number" id="yas" name="yas" min="1" max="120" required> <input type="submit" value="Gönder"> </form> </body> </html> |
Oluşturduğumuz FORM yapısı şu şekilde olacaktır: