Tutanak Var olmadığını kontrol edin

8 Cevap

Ben dosya varsa this on php.net kontrol etmek için bulundu.

Ben rekor İlk varsa aksi bir ekleme yapmak, sonra güncelleme yapmak, kontrol etmek istiyorum.

if(record exist) {
   update query}
else 
  { insert query}

Ben güncelleme veya eklemek için nasıl biliyorum, ama bir rekor birinci olup olmadığını kontrol etmek için nasıl bilmiyorum. Nasıl yapılır?

8 Cevap

Bir SQL nasıl biliyorsanız SELECT, daha sonra bunu:

$result = mysql_query("SELECT * FROM table1 WHERE something");
$num_rows = mysql_num_rows($result);

if ($num_rows > 0) {
  // do something
}
else {
  // do something else
}

Daha da iyisi, PHP bunu yapmayın INSERT ... ON DUPLICATE KEY UPDATE kullanın.

Ayrıca deneyebilirsiniz this

INSERT ... ON DUPLICATE KEY UPDATE

Sen (Ben o senin soru gibi geliyor ne yana, sen kayıtları için bir veritabanı kullanarak konum varsayarak, ve kulüpler sizin veritabanı için SQL sorgusunda doğrudan yapabilir, PHP bunu yapmak gerekmez Bu sıklıkla PHP ile birlikte kullanılan beri ') MySQL kabul edeceğiz.

INSERT INTO ... ON DUPLICATE KEY UPDATE;

Bu zaten mevcut değilse, yeni bir satır eklemek, ya da, sizin tablolar birincil anahtarlar var varsayarak yoksa mevcut bir güncelleme olacak.

MySQL Manual Bu konuda daha fazla bilgi için bkz.

Diğer seçenek, sadece ilk bir SELECT COUNT(1) FROM myTable WHERE ... sorgu yapmak ve sonuç 0 ise o sadece bir ekleme yapmak, aksi takdirde bir güncelleme yapmaktır.

Sizin kriterlerinize uyan kayıtları saymak?

select count(*) from foo where id = 5

if($count > 0) {
    // record exists
    ...
}

Tamam bu kodu kullanmak zorunda:

$res = "SELECT fieldname FROM tablename WHERE fieldname LIMIT 1";
$rs = mysql_query($res);
$num = mysql_num_rows($rs);

if($num > 0) 
{
    //add
}
else 
{
    //error msg
}

Siz bu kayıt için bir seçme yapmak ve sonucu incelemek veya bir güncelleştirme denemek ve bir hata olup olmadığını görmek olabilir olabilir. Varsa, o zaman güncelleştirmek, bu yüzden bir ekleme yapmak için hiçbir şey yoktu.

I would recommend Dominic Rodger's solution, but with a little change to make it faster. You should select a single value and not more than one row.

$result = mysql_query("SELECT key FROM table1 WHERE something LIMIT 1");
$num_rows = mysql_num_rows($result);

if ($num_rows > 0) {
  // do something
}
else {
  // do something else
}

Lütfen kayıt zaten varsa, bir sonuç alırsınız, wich fazla 0 sonuç olduğunu, bu nedenle SQL Server daha az trafik potansiyel olarak çalışır, ancak.

Garip kimse DEĞİŞTİR kullanarak söz etti?