Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Mysql Update

Arkadaşlar merhaba,
Sorunum şu şekilde, sitenin ayarlar kısmına eposta gizliliği seçenegi koydum. bir checkbox ilave ettim. jquery ile onay kutusunu kontrol edip. yine jquery post ile diger.update.php dosyasına üye id ve onay kutusu degerini aktardım. Buraya kadar herşey kusursuz çalışıyor.
iş veritabanına kayıt etmeye geldi. fakat mysql update ile set ettigim de. mysql veritabanında verdigim koşulları bulamadıgından kayıt Güncelleme işlemini yapmıyor.

Buradaki sorunumuz şu update gerçekleşmediginde mysql ınsert ile yeni bir kayıt eklemelimiyim? Tam hatırlamıyorum. mysqlun bir kodlaması vardı. eger (WHERE .... AND ... ) verdiğiniz kriterlerde kayıt satır yoksa yeni bir satır ekliyordu.

Direkt Insert ile eklersem üye ayarlara girip onay kutusunu işaretleyip gönderdiğinde ve her işlem yaptıgında yeni bir kayıt satırı eklenecek. update edip false geldiğinde Insert edebilirim fakat dedigim gibi bir mysql kodu vardı?
Bu duruma mysqlün daha işlevsel çözümü nedir?
Teşekkürler...
  • sorun çok anlaşılmıyor. Öncelikle update yaptığında ne sebeple hata alıyorsun. checkbox seçili olumca neyi update ediyorsun. Hatta örnek sql eklersen sorunu daha kolay çözebiliriz.
    Kesali 11 yıl önce yazdı
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • siyahbeyaz adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    11 yıl önce güncellenmiş
    472 cevap - 20 soru
    $sorgu = mysql_query("update test set alan='test' where id='1';");         
    if (mysql_affected_rows()==0) {
        $sorgu = mysql_query("insert into test (id, alan) values ('1','test');");
    }
    
    // birde sole bisi var
    
     $sorgu = mysql_query("INSERT INTO tablo (field) VALUES ('deger23') ON DUPLICATE KEY UPDATE field='deger'");
    


    dedigin kod bumuydu?
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      ha birde söyle birsey var. bu mysql den ziyade php5 ile gelen hata yakalam sistemi

      try {
      mysql_query("update tablo set deger='degergelsinburaya'  where id=1");
      // yukardaki kodda herhangi bir hata olmazsa..
      } catch 
      {
      mysql_query("insert into tablo (deger) values ('De Here Looo sende :D')");
      
      // update isleminde bir hata yada basarısızlık soz konusu olursa insert into calısacaktır
      }
      
      
      
      11 yıl önce yazılmış

Cevaplar

  • Asiismet adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    141 cevap - 18 soru
    Cevaplar için teşekkürlr arkadaşım. Yaklaşım matıgı dogru fakat aradıgım cevap degil daha dogrusu verdiklerin sorunumu çözmedi.

    $usermeta_email_status_result = mysql_query("UPDATE `scs_usermeta` SET `meta_value` = '$email_status' WHERE `user_id`='$user_id' AND `meta_key`='user_email_status'");
    


    Yukarı kodlamada;
    $user_id değişkeni giriş yapmış olan üyenin id si. 1 2 3 .... int tam sayı.
    $email_status değişkeni true ve false yani boolean E/H email gizlemek istediginde true/ gizlemek istemezse false deger alıyor.
    Buraya kadar her şey tamam

    tabloya baglanıyor. where ile id 1 VE `meta_key` sutününda user_email_status degeri olan satırını arıyor. bulursa, gayet güzel değiştiriyor.
    Fakat bulamazsa benim sorunumda burda başlıyor.
    Çnkü UPDATE bulursa satırı güncellesede 1 degeri gönderiyor. bulamadıgındada 1 gönderiyor.
    Zaten herhangi bir hata kodu sözkonusu olmadıgından tyr catch işlem yapmadı.

    Kısaca benim istediğim eger where ile verdigim koşulda saır yoksa eklesin. varsa güncellesin.
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      cok dönemecli bir yolda gitmişsin..
      su sekilde yapabilirsin olayı

      <form .....>
      k.adi <input .....>
      sifre : <input ....>
      Beni hatırla <input type="Checkbox" name="hatirla" value="1" />
      <button ..>
      </form>
      


      $hatirla = $_POST["hatirla"];
      if(empty($hatirla)) {
      $hatirla = 0;
      }
      
      mysql_query("UPDATE tablom set hatirla='".$hatirla."' where user_id=1 ");
      
      


      seklinde bir yol izlemen..
      cunku neden diyeceksin. bir kere checkbox secili degilse yani off olarak gelmişse deger atanmamış olarak gelir. yani öyle bir degisken hic olusturulmamıs olacaktir. yukardaki if kontrolune bakarsanız ne demek istedigimi anlayacaksiniz...


      işin basit yolu bır form olusturun icine bir adet checkbox koyun ve kaydet.php ye post edin
      kaydet php icine

      print_r($_POST); yapın ve gelen array ın ıcergıne bakın.
      11 yıl önce yazılmış
    • kurtitasarim adlı üyenin fotoğrafı kurtitasarim
      ilk olarak mysql_num_rows ile kayıt varmı yani if döngüsü içinde kontrol ettir ! eğer yok ise yani else ile kayıt et ! mysql_num_rows sana false olarak dönüyor ise hemen altına bir kayıt sayfası açtırabilirsin jquery ile..
      11 yıl önce yazılmış