Günlük kullandığımız tarih formatını MySQL veritabanına doğrudan kaydetmemiz mümkün değildir. Bir tarihi veri tabanına kaydetmek için veritabanının anlayacağı formata yani YIL-AY-GÜN biçimine dönüştürmek gerekir. Daha önceki yazıda veritabanından tarihi seçme ile ilgili b PHP ve MySQL ile Türkçe Tarih Formatı isimli bir yazı yazmıştım.
Bu yazıda PHP ile bir tarih formatını veri tabanına nasıl kayıt edeceğinizi bir yöntemle göstereceğim. Örnekte kullandığım tablonun adı öğrenci ve alanları lu şekildedir.
Veritabanına kaydetmek için gün-ay-yıl şeklinde alınan tarihi yıl-ay-gün biçimine dönüştürüyoruz.
1 2 3 4 |
$tarih = DateTime::createFromFormat('d-m-Y', "17-05-2020"); $vtTarih= $tarih->format('Y-m-d'); |
Ardından aşağıdaki gibi ekleme işlemenini yapan PDO nesnesini yazıyoruz.
1 2 3 4 |
$stmt = $dbh->prepare("INSERT INTO OGRENCI (ograd, ogrsoyad,dtarih) VALUES(?,?,?)"); $stmt->execute( ['ALİ', 'AL',$vtTarih]); |
MySQL Veritabanına Tarih Kaydetme
Yukarıdaki kodları birleştirecek olursak MySQL veritabanına tarih kaydetme işlemi için yazmamız gereken PDO nesnesi ve tarih dönüştürme kodları şu şekilde olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $vt="kutuphane"; $user="root"; $pass=""; $dbh = new PDO("mysql:host=localhost;dbname=".$vt, $user, $pass); //Alınan tarih gün-ay-yıl $tarih = DateTime::createFromFormat('d-m-Y', "17-05-2020"); $vtTarih= $tarih->format('Y-m-d'); $stmt = $dbh->prepare("INSERT INTO OGRENCI (ograd, ogrsoyad,dtarih) VALUES(?,?,?)"); try { $dbh->beginTransaction(); $stmt->execute( ['ALİ', 'AL',$vtTarih]); //kayıt işlemi $dbh->commit(); } catch(PDOExecption $e) { $dbh->rollback(); print "Hata!: " . $e->getMessage() . "</br>"; } $dbh = null; |
Teşekkürler.