Aynı anda birden fazla tabloya kayıt etmek
Post ile gelen verileri aynı anda birden fazla tabloya kaydetmek için aşağıdaki gibi bir kod yazdım ancak ilk başta bulunan $ekle çalışmıyor dierkt iflerin içerisindekiler çalışıyor. $ekle yi if parantezlerinin içerisine yazıpta denemiştim yine olmuyordu onun yerine oekle ve pekle çalışıyor. Ne yapabilirim?
<?php
$ekle = "INSERT into genel (baslik,aciklama,adres,logo,etiket) values('$baslik','$aciklama','$padres','$ad','$etiket')";
if($tur==$oyun) {
rename('../admin/'.$sadi.'', '../games/'.$sadi.'');
$oekle = "INSERT into oyunlar (baslik,aciklama,adres,logo,etiket) values('$baslik','$aciklama','$adres','$ad','$etiket')";
if($connect->query($oekle)) {
echo "Başarıyla Eklendi. 5 Saniye İçerisinde Yönetim Sayfasına Yönlendirileceksiniz.";
header("Refresh: 5; url=yonetim.php");
}
else {
echo "Bir hata oluştu! Maalesef İşlem Tamamlanamadı :/";
header("Refresh: 5; url=yonetim.php");
}
}
elseif($tur==$program) {
rename('../admin/'.$sadi.'', '../programs/'.$sadi.'');
$pekle = "INSERT into programlar (baslik,aciklama,adres,logo,etiket) values('$baslik','$aciklama','$adres','$ad','$etiket')";
if($connect->query($pekle)) {
echo "Başarıyla Eklendi. 5 Saniye İçerisinde Yönetim Sayfasına Yönlendirileceksiniz.";
header("Refresh: 5; url=yonetim.php");
}
else {
echo "Bir hata oluştu! Maalesef İşlem Tamamlanamadı :/";
header("Refresh: 5; url=yonetim.php");
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
birdan fazla tabloya kayıt için PDO'da çok güzel fonksiyonlarımız var aslında arkadaşların verdiği cevaplar da işe yarayabilir fakat her zaman hazır PDO fonksiyonlar hem daha güvenli hem daha kolay olur genelde
/* Ototeslim kipini kapatıp bir hareket başlatalım */
$dbh->beginTransaction();
/* Veritabanı şemasını ve verisini değiştirelim */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* değişikliği gönderiyoruz */
$dbh->commit();
Fakat bu şekilde kullanman için PDO bağlantında bğazı değiştikler yapıp attr eklemen gerekiyor
ve toplu paket yüklerken her zmaan try catch içine al ve şu kodu yaz
/* bu kod bir hata var ise yaprığın değikiklikleri geri almana yarar */
$dbh->rollBack();
bağlantında yapman gereken değişklik ise şu
array(PDO::ATTR_PERSISTENT => true)
/* bu kodu PDO bağlantı cümlenin sonuna , ile ekle */
kodlarında $ekle için herhangir bir işlem yaptırmamışsın ki
sadece değişkene sorguyu yazmışsın ama sorguyu çalıştırmamışsın
$ekle = connect->prepare("INSERT INTO genel SET baslik=?, aciklama=? ,adre=? s,logo=? ,etiket=? ");
$ekle->execute([$baslik, $aciklama, $adres, $logo, $etiket]);
if($ekle->rowCount() ){
echo "eklendi";
}else{
echo "eklenmedi";
}
kısacası bir elseif daha çekmen gerekiyor senin kodlarına göre yada son elseif den sonra bir else daha
yani 2 tur de yok sa else çalışıyor
yada 3. bir tür varsa elseif $ekle çalışır