lostyazilim
tr.link

Mysql veri yazarken tekrarlayan kayıtları atlama (Yardım)

4 Mesajlar 882 Okunma
lstbozum
tr.link

adresbilisim adresbilisim WM Aracı Kullanıcı
  • Üyelik 02.12.2018
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılımcı
  • Konum İstanbul Avrupa
  • Ad Soyad T** Ş**
  • Mesajlar 12
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Herkese merhabalar,

Xml dosyasından verileri mysql veritabanına yazdırıyorum.

Ancak güncelleme atmak istediğimde var olanı atlamak yerine tekrar aynılarını yazıyor.

Tekrarlayan kayıtları atlamak için nasıl bir kod kullanmam gerekli?


Veri Yazan Bölüm Aşağıdadır.

$sql = "INSERT INTO siparis(musteri_mail,musteri_isim,sip_baslik,sip_teslim_tarihi,sip_aciliyet,sip_durum,sip_detay) VALUES ('" . $siparisNo . "','" . $faturaalici . "','" . $id . "','" . $tarih . "','Normal','Depoya Verildi','" . $TeslimAdresi . "')";
 

 

Tayfun Şimşek - E-Ticaret Yöneticisi
wmaraci
reklam

HMAWebHizmetleri HMAWebHizmetleri WM Aracı Kullanıcı
  • Üyelik 29.03.2018
  • Yaş/Cinsiyet 34 / E
  • Meslek Sosyal Medya Uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad H** D**
  • Mesajlar 65
  • Beğeniler 14 / 14
  • Ticaret 2, (%100)
merhaba hocam, benim bildiğim yöntemle kontrol edebilirsiniz, eminim daha iyi yöntemler bilenler vardır.

$siparisNo="99";

$kontrol = $conn->query("Select*From siparis);
$kontrol = $kontrol ->fetch_assoc();

$tablodakiSiparisNo = $kontrol["siparisNo"]; //$siparisNo'nun tablodaki adının ne olduğundan tam emin olamadım kendize göre düzeltebilirsiniz.

if($siparisNo==$tablodakiSiparisNo){
echo "Daha önce böyle bir kayıt bulunduğundan eklenemedi.";
}else{
$conn->query("INSERT INTO siparis(musteri_mail,musteri_isim,sip_baslik,sip_teslim_tarihi,sip_aciliyet,sip_durum,sip_detay) VALUES ('" . $siparisNo . "','" . $faturaalici . "','" . $id . "','" . $tarih . "','Normal','Depoya Verildi','" . $TeslimAdresi . "')";

}


şeklinde yapabilirsiniz. İsterseniz bir deneyin.
 

 

adresbilisim adresbilisim WM Aracı Kullanıcı
  • Üyelik 02.12.2018
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılımcı
  • Konum İstanbul Avrupa
  • Ad Soyad T** Ş**
  • Mesajlar 12
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
maalesef olmadı. Hata sayfası geldi.

Kodlama yapısı aşağıdaki gibi. Belki böyle bakınca daha met anlaşılabilir.

$conn = mysqli_connect("localhost", "root", "", "test");


$affectedRow = 0;

$xml = simplexml_load_file("http://test.xmltest.com/image/data/xml/depo.xml") or die("Error: Cannot create object");

foreach ($xml->children() as $row) {
$siparisNo = $row->siparisNo;
$faturaalici = $row->faturaalici;
$id = $row->id;
$tarih = $row->tarih;
$TeslimAdresi = $row->TeslimAdresi;



$sql = "INSERT IGNORE INTO siparis(musteri_mail,musteri_isim,sip_baslik,sip_teslim_tarihi,sip_aciliyet,sip_durum,sip_detay) VALUES ('" . $siparisNo . "','" . $faturaalici . "','" . $id . "','" . $tarih . "','Normal','Depoya Verildi','" . $TeslimAdresi . "')";



$result = mysqli_query($conn, $sql);



if (! empty($result)) {
$affectedRow ++;
}

else {
$error_message = mysqli_error($conn) . "\n";
}
}
?>
 

 

Tayfun Şimşek - E-Ticaret Yöneticisi

DenizOZTURK DenizOZTURK WM Aracı Kullanıcı
  • Üyelik 02.02.2014
  • Yaş/Cinsiyet 26 / E
  • Meslek -
  • Konum Diğer
  • Ad Soyad D** Ö**
  • Mesajlar 478
  • Beğeniler 189 / 158
  • Ticaret 4, (%100)
Eklediğin datalar içerisinde benzersiz bir kod, sayı vb. birşey kullanılıyor ise; datayı eklemeden önce, foreach içerisinde if bloğu ile tabloya daha önce yazılıp yazılmadığını kontrol edebilirsin
 

 

wmaraci
wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al