Nasıl ben mysql en son girdiyi seçerim?

5 Cevap php

i bir tablodan en son girdiyi seçin ve o giriş tam kullanıcı girmeye çalışıyor biri olarak aynı olup olmadığını görmek istiyorum. Ben "'gönderme' en son girişinden * seçmek" için bir sorgu nasıl yapabilirim?

    $query="Select * FROM 
        //confused here 
 (SELECT * FROM posting ORDER BY date_added DESC)
 WHERE user_id='{$_SESSION['user_id']}'
 AND title='$title'
 AND price='$price'
 AND city='$city'
 AND state='$state'
 AND detail='$detail'
 ";

 $data = mysqli_query($dbc, $query);
 $row = mysqli_fetch_array($data);
 if(mysqli_num_rows($data)>0)
 {
  echo "You already posted this ad. Most likely caused by refreshing too many times.";
  echo "<br>";
  $linkposting_id=$row['posting_id'];
  echo "See the <a href='ad.php?posting_id=$linkposting_id'>Ad</a>";
 }
 else
 {
        ...insert into the dbc
        }

//would this query work? or how do i use it to select the last ID in the table 'posting'?
    $query="SELECT LAST_INSERT_ID(posting)
     WHERE user_id='{$_SESSION['user_id']}'
     AND title='$title'
     AND price='$price'
     AND city='$city'
     AND state='$state'
     AND detail='$detail'
     ";

5 Cevap

Orderby parça, sorgunun sonunda gelmek gerekiyor. Yani için soruyorsun sorgu böyle bir şey olur:

select * from posting where .... order by date_added desc limit 1;

Tek kullanımlık formu belirteçleri de, yinelenen gönderimleri önlemeye yardımcı olabilir.

Yorumlarınızı dayanarak, aşağıdaki sorgular birini tek son kayıt almak olacaktır:

SELECT * FROM posting ORDER BY date_added DESC LIMIT 1

SELECT * FROM posting ORDER BY posting_id DESC LIMIT 1

Siz genellikle tablodaki benzersiz bir tanımlayıcı var ve bu sütuna bir auto_increment verecek. Bu zaten böyle bir tanımlayıcı olması mümkündür.

Daha sonra PHP'nin mysql_insert_id() veya MySQL en LAST_INSERT_ID() kullanarak son kaydın kimliğini getirebilir.

Kılavuzuna göre, bu per connection sayısını tutar, çünkü ikinci tercih olacaktır, böylece diğer işlemler veya web sayfaları arasında saymak kadar berbat olamaz. Bu PHP işlevi aynı işi yapar mı PHP kılavuzunu tamamen emin değil.

Ben tabloda benzersiz bir anahtar oluşturmak yerine açıklandığı ne yapıyor öneririz. Kaç kullanıcı çoğaltılamaz içeriği bağımsız önlemek Bu şekilde aynı anda uygulama kullanıyor. Bir şey ekler eğer çözüm başarısız olur, B başka bir şey ekler, sonra bir tekrar gönderir.

Varolan tabloya benzersiz bir anahtar ekleyerek örnek:

ALTER TABLE posting add UNIQUE KEY uk_posting (title, price, city)

title, price, city benzersiz olmalı alanların kombinasyonu ile değiştirin. Daha sonra yapmanız gereken tek şey eklemek üzerine hatayı idare etmektir.

LIMIT 1 ile son (en son) giriş için sorgu sınırlayın