Php 8 MySQLi ile Kayıt Güncelleme

Php 8 MySQLi ile Kayıt Güncelleme

PHP 8 ile MySQLi kullanarak MySQL veritabanındaki kayıtları güncellemek için, temel olarak bir UPDATE SQL sorgusu kullanırız. Bu işlemi daha güvenli hale getirmek için prepared statements (hazırlıklı ifadeler) kullanmak iyi bir yaklaşımdır. Aşağıda hem basit bir örnek hem de daha güvenli bir yaklaşım sunuyorum.

1. MySQLi ile Kayıt Güncelleme (Temel Yöntem)

Bu örnekte, users tablosundaki bir kullanıcının adını ve e-posta adresini güncelleyeceğiz.

Adım 1: Veritabanı Bağlantısı

<?php $servername = "localhost"; $username = "root"; $password = ""; $database = "my_database"; // 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); } ?>

Adım 2: SQL Sorgusu ile Kayıt Güncelleme

<?php // Güncellenecek kullanıcının id'si $user_id = 1; // Yeni veriler $new_name = "Yeni Ad"; $new_email = "yeniemail@example.com"; // Güncelleme sorgusu $sql = "UPDATE users SET name='$new_name', email='$new_email' WHERE id=$user_id"; if ($conn->query($sql) === TRUE) { echo "Kayıt başarıyla güncellendi."; } else { echo "Hata: " . $conn->error; } $conn->close(); ?>

Açıklama:

  • $sql değişkeninde bir UPDATE sorgusu oluşturuyoruz. users tablosunda id değeri 1 olan kullanıcı için name ve email sütunlarını güncelliyoruz.
  • $conn->query() sorguyu çalıştırır ve güncelleme işlemi başarılıysa mesaj döner.

2. Prepared Statements ile Kayıt Güncelleme (Güvenli Yöntem)

Hazırlıklı ifadeler (Prepared Statements) SQL enjeksiyon saldırılarına karşı daha güvenli bir yöntem sunar. Bu yöntemde, veri doğrudan SQL sorgusuna eklenmeden önce yer tutucular (placeholders) kullanılır ve bu veriler bağlanır.

Adım 1: Veritabanı Bağlantısı (Aynı)

<?php $servername = "localhost"; $username = "root"; $password = ""; $database = "my_database"; // 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); } ?>

Adım 2: Hazırlıklı İfadeler ile Kayıt Güncelleme

<?php // Güncellenecek kullanıcının id'si $user_id = 1; // Yeni veriler $new_name = "Güncellenmiş Ad"; $new_email = "guncellenmisemail@example.com"; // Hazırlıklı ifadeyi oluştur $stmt = $conn->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?"); // Verileri yer tutuculara bağla $stmt->bind_param("ssi", $new_name, $new_email, $user_id); // "s" string, "i" integer demektir // Sorguyu çalıştır if ($stmt->execute()) { echo "Kayıt başarıyla güncellendi."; } else { echo "Hata: " . $stmt->error; } // Hazırlıklı ifadeyi ve bağlantıyı kapat $stmt->close(); $conn->close(); ?>

Açıklama:

  • $stmt = $conn->prepare(): Güncelleme sorgusunu hazırlıklı ifade (prepared statement) olarak oluşturuyoruz. ? işaretleri yer tutuculardır.
  • $stmt->bind_param(): Yer tutuculara (?) bağlanacak verileri tanımlar. İlk argüman "ssi" ifadesidir: "s" string, "i" integer anlamına gelir.
  • $stmt->execute(): Hazırlanan ifadeyi çalıştırır ve güncelleme işlemi başarılıysa bir mesaj gösterir.
  • s t m t > c l o s e ( ) v e stmt->close()** ve ** conn->close(): Hazırlıklı ifadeyi ve veritabanı bağlantısını kapatırız.

3. HTML Form ile Kayıt Güncelleme

Eğer bir kullanıcıdan gelen verilerle (örneğin bir form aracılığıyla) kayıt güncellemek isterseniz, şöyle bir yapı kurabilirsiniz:

Adım 1: HTML Formu

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Kullanıcı Güncelle</title> </head> <body> <h2>Kullanıcı Bilgilerini Güncelle</h2> <form action="update_user.php" method="POST"> <label for="name">Ad:</label> <input type="text" id="name" name="name" required> <br> <br> <label for="email">Email:</label> <input type="email" id="email" name="email" required> <br> <br> <input type="hidden" name="user_id" value="1"> <button type="submit">Güncelle</button> </form> </body> </html>

Adım 2: PHP ile Güncelleme (update_user.php)

<?php $servername = "localhost"; $username = "root"; $password = ""; $database = "my_database"; // 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); } // Formdan gelen verileri al $user_id = $_POST['user_id']; $new_name = $_POST['name']; $new_email = $_POST['email']; // Hazırlıklı ifadeyi oluştur $stmt = $conn->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?"); // Verileri yer tutuculara bağla $stmt->bind_param("ssi", $new_name, $new_email, $user_id); // Sorguyu çalıştır if ($stmt->execute()) { echo "Kayıt başarıyla güncellendi."; } else { echo "Hata: " . $stmt->error; } // Hazırlıklı ifadeyi ve bağlantıyı kapat $stmt->close(); $conn->close(); ?>

4. Sonuç

Bu örneklerde, MySQLi ile veritabanı kayıtlarını güncelleme işlemi hem basit bir sorgu yöntemiyle hem de daha güvenli bir yöntem olan prepared statements ile gösterilmiştir. Prepared statements kullanarak güvenliği artırabilir ve SQL enjeksiyon saldırılarına karşı korunabilirsiniz. Özellikle kullanıcıdan gelen verilerle işlem yaparken bu güvenlik önlemi büyük önem taşır.



Yorum Ekle

Üzerine gel