PDO CRUD işlemi | Home
PHP,  WEB TEKNOLOJİLERİ

PDO CRUD işlemi | MYSQL8 min read

Merhabalar,
Bu Yazımda PDO CRUD işlemi (Create , Read , Update , Delete) türkçesiyle (Oluşturma , Okuma , Güncelleme , Silme) işlemini görmüş olacaksınız.

Burdaki CRUD işlemi Sade Biçimde yani Dosya yüklemesiz olarak sunulmuştur.

Dosya Yüklemeli CRUD işlemine gitmek için Tıklayın

Veritabanımız

PDO CRUD işlemi database
MYSQL Veritabanımız

Veritabanımızdaki Veriler

PDO CRUD işlemi veriler
Makale Tablosundaki Veriler

Veritabanı bağlanma sayfası (fonk.php)

<?php
$host = '127.0.0.1';
$dbname = 'pdocrud';
$username = 'root';
$password = '';
$charset = 'utf8';
//$collate = 'utf8_unicode_ci';
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_PERSISTENT => false,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    //   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset COLLATE $collate"
];
try {
    $baglanti = new PDO($dsn, $username, $password, $options);
    $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Bağlantı hatası: ' . $e->getMessage();
    exit;
}
?>

Anasayfamız (Read/Gösterme) (index.php)

Bu sayfamızda verilerimiz gösteriliyor Ekle , Düzenle , Sil Butonlarına basarak işlemi gerçekleştirebilirsiniz

PHP PDO ile CRUD | Home
Anasayfamız (Read/Gösterme)

Gereken açıklamayı kaynak kodda belirtilmiştir.

<!DOCTYPE html>
<html>
<head>
	<title>PDO CRUD</title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<link rel="stylesheet" type="text/css" href="css/all.min.css">
</head>
<body>

	<container>
		<div class="row">
			<div class="col-md-8">
				<a href="ekle.php"><button type="button" class="btn btn-primary btn-lg btn-block">YENİ VERİ EKLE</button></a>
				<table class="table table-striped">
					<thead>
						<tr>
							<th scope="col">ID</th>							
							<th scope="col">BAŞLIK</th>
							<th scope="col">AÇIKLAMA</th>
							<th scope="col">Düzenle</th>
							<th scope="col">SİL</th>
						</tr>
					</thead>
					<tbody>
						<?php
						include('fonk.php'); // İndex.php sayfamıza veritabanını çağırıyoruz

						$sorgu = $baglanti->prepare('Select * from makale'); // Veritabanındaki Makale tablosundaki tüm verileri çekiyoruz
						$sorgu->execute(); // Sorgumuzu çalıştırıyoruz

						while($sonuc=$sorgu->fetch()) // While Döngüsü ile Verilerimzi döndürüyoruz
						
						{  // While Başlangıcı

							?>
							<tr>
								<th scope="row"><?= $sonuc['id']?></th>						
								<td><?= $sonuc['baslik']?></td>
								<td><?= $sonuc['aciklama']?></td>
								<td>
								<a href="duzenle.php?id=<?= $sonuc["id"] ?>"><button type="button" class="btn btn-success">Düzenle</button></a>
								</td>
								<td>
								<a href="sil.php?id=<?= $sonuc["id"] ?>"><button type="button" class="btn btn-warning">SİL</button></a>
								</td>
							</tr>

							<?php
						}  // While Bitiş

						?>
						
					</tbody>
				</table>

			</div>
		</div>
	</container>

	<script src="js/jquery-3.4.1.min.js"></script>	
	<script src="js/bootstrap.min.js"></script>
</body>
</html>

Düzenleme sayfaı (Update) (duzenle.php)

PDO CRUD işlemi | Duzenle / Update
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <title></title>
</head>
<?php
include('fonk.php');

$sorgu = $baglanti->prepare("SELECT * FROM makale Where id=:id");
$sorgu->execute(['id' => (int)$_GET["id"]]);
$sonuc = $sorgu->fetch();//sorgu çalıştırılıp veriler alınıyor
?>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <a href="index.php"><button type="button" class="btn btn-danger btn-lg btn-block">Geri DÖN</button></a>
                <div class="card mb-3">
                    <div class="card-body">                     
                     <form method="post" action="" enctype="multipart/form-data">                      
                    <div class="form-group">
                        <label>Başlık</label>
                        <input required type="text" value="<?= $sonuc["baslik"] ?>" class="form-control" name="baslik"
                        placeholder="Başlık">
                    </div>                  
                    <div class="form-group">
                        <label>Açıklama</label>
                        <input required type="text" value="<?= $sonuc["aciklama"] ?>" class="form-control" name="aciklama"
                        placeholder="Açıklama">
                    </div>    
                    <div class="form-group">
                        <button type="submit" class="btn btn-primary">Güncelle</button>
                        <script type="text/javascript" src="js/sweetalert.min.js"></script>
                        <?php
                   if ($_POST) { // Sayfada post olup olmadığını kontrol ediyoruz.
                 $baslik = $_POST['baslik']; // Sayfa yenilendikten sonra post edilen değerleri değişkenlere atıyoruz
                  $aciklama = $_POST['aciklama']; 
                     $hata = "";

    // Veri alanlarının boş olmadığını kontrol ettiriyoruz. başka kontrollerde yapabilirsiniz.
    
    if ($baslik <> "" && $aciklama <> "" && $hata == "") { // Veri alanlarının boş olmadığını kontrol ettiriyoruz.
        //Değişecek veriler
        $satir = [
            'id' => $_GET['id'],            
            'baslik' => $baslik,
            'aciklama' => $aciklama,

        ];
        // Veri güncelleme sorgumuzu yazıyoruz.
        $sql = "UPDATE makale SET baslik=:baslik, aciklama=:aciklama WHERE id=:id;";
        $durum = $baglanti->prepare($sql)->execute($satir);

        if ($durum) {
            echo '<script>swal("Başarılı","Güncellendi","success").then((value)=>{ window.location.href = "index.php"});

            </script>';
            // Eğer güncelleme sorgusu çalıştıysa index.php sayfasına yönlendiriyoruz.
        } else {
            echo 'Düzenleme hatası oluştu: '; // id bulunamadıysa veya sorguda hata varsa hata yazdırıyoruz.
        }
    }
    if ($hata != "") {
        echo '<script>swal("Hata","' . $hata . '","error");</script>';
    }
}
    ?>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

Veri ekleme sayfası (Create/Oluşturma) (ekle.php)

veri ekleme
Veri Ekleme
<!DOCTYPE html>
<html>
<head>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<title></title>
</head>
<body>
	<div class="container">
		<div class="row">
			<div class="col-md-6">
				<a href="index.php"><button type="button" class="btn btn-danger btn-lg btn-block">Geri DÖN</button></a>
				<div class="card mb-3">
					<div class="card-body">						
						<form method="post" action="" enctype="multipart/form-data">
								<div class="form-group">
								<label>Başlık</label>
								<input required type="text" class="form-control" name="baslik" placeholder="Başlık">
							</div>				
							<div class="form-group">
								<label>Açıklama</label>
								<input required type="text" class="form-control" name="aciklama" placeholder="Açıklama">
							</div>
							<div class="form-group">
								<button type="submit" class="btn btn-primary">Güncelle</button>
								<script type="text/javascript" src="js/sweetalert.min.js"></script>
							</div>
							<?php
							include('fonk.php');
				
if ($_POST) { // Sayfada post olup olmadığını kontrol ediyoruz.

    $baslik = $_POST['baslik'];// Sayfa yenilendikten sonra post edilen değerleri değişkenlere atıyoruz
    $aciklama = $_POST['aciklama'];    
    $hata = "";

    // Veri alanlarının boş olmadığını kontrol ettiriyoruz. başka kontrollerde yapabilirsiniz.
    
    if ($baslik <> "" && $aciklama <> "" && $hata == "") { // Veri alanlarının boş olmadığını kontrol ettiriyoruz.
        //Değişecek veriler
        $satir = [                       
            'baslik' => $baslik,
            'aciklama' => $aciklama, 


        ];
          $sql = "INSERT INTO makale SET baslik=:baslik, aciklama=:aciklama;";
        $durum = $baglanti->prepare($sql)->execute($satir);

        if ($durum) {
            echo '<script>swal("Başarılı","Güncellendi","success").then((value)=>{ window.location.href = "index.php"});
            </script>';
            // Eğer güncelleme sorgusu çalıştıysa index.php sayfasına yönlendiriyoruz.

        }
    
         else {
            echo '<script>swal("Hata","Hatalı , Lütfen bilgilerinizi kontrol ediniz.","error");</script>'; // id bulunamadıysa veya sorguda hata varsa hata yazdırıyoruz.
        }
    }
    if ($hata != "") {
        echo '<script>swal("Hata","' . $hata . '","error");</script>';
    }
}

?>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

Veri silme (Delete/Silme) (sil.php)

<?php
if ($_GET) {

    $sayfa = $_GET["sayfa"];
    include("fonk.php"); // veritabanı bağlantımızı sayfamıza ekliyoruz.
    $sorgu = $baglanti->prepare("SELECT * FROM makale Where id=:id");
    $sorgu->execute(['id' => (int)$_GET["id"]]);
    $sonuc = $sorgu->fetch();//sorgu çalıştırılıp veriler alınıyor
    
        // id'si seçilen veriyi silme sorgumuzu yazıyoruz.
    $where = ['id' => (int)$_GET['id']];
    $durum = $baglanti->prepare("DELETE FROM makale WHERE id=:id")->execute($where);
    if ($durum) {
        header("location:index.php"); // Eğer sorgu çalışırsa index.php sayfasına gönderiyoruz.
    }
}
?>

Bu uygulamayı birçok yerde kullanabilir , projelerinize entegre edebilirsiniz.

Uygulamayı Entegre etmeden önce test ediniz.

PDO CRUD Uygulamasını ve veritabanına buradan bulabilirsiniz ==> PdoCRUD.zip

Görüşleriniz bizim için değerli , emoji bırakarak yada yorum yazarak görüşlerinizi bize belirtebilirsiniz. 

Saygılarımla , İyi KODLAMALAR 🙂