Yüksek Puan gönderebilir ve pozisyon alma

4 Cevap php

Ben MYSQL ile çok anlayışlı değilim, bu yüzden önceden özürlerimi bu aptalca bir sorudur.

Ben süper bir temel PHP Yüksek Skorlar tablo oluşturduk. DB Tablo içine yeni bir puan yerleştirdikten sonra, ben kişilerin bu aralığa düşen skoru 10 sonuç alabilirsiniz böylece skoru konumunu almak istiyorum.

Benim INSERT Sorgu gibi bir şey görünüyor:

$stmt = $mysqli->prepare("INSERT INTO highscores (name, time, score) VALUES (?, ?, ?)");
$stmt->bind_param('sdi', $name, $time, $score);

UPDATE - I'm looking for a way to do this with as few queries as possible. I recall reading something about getting an INSERT ID when making an insert, but I would then still have to make a second query to get those results.

4 Cevap

Mevcut skor daha attı insanların sayısını elde etmek için:

SELECT COUNT(*) FROM table_name WHERE score > $score

Böylece, rütbeli skoru 1 + mysql_result($result, 0) yerine inci olacaktır.

"...but I would then still have to make a second query to get those results."

In order to get your result you don't need to do an INSERT 1st, you can get those result without inserting the row. As suggested by Joe Mejewski, you can do:

$query = "SELECT COUNT(*) FROM highscores WHERE score > '" . $score . "'";

Sonra satır eklemek isterseniz, bir 2. sorgu gerekir.

"I'm looking for a way to do this with as few queries as possible!"

Neyse, iki sorgu gerekir ve bu kimliği ya da tek satır almak gerekmez, çünkü son eklenen id (Eğer yüksek puanlar tabloda bir değiştirmemesi id yerleştirilir eğer ben anlamıyorum wich) almak, size yardımcı woudn't ancak tüm satırlar takılı olandan daha yüksek puan olduğunu.

your comment: "...So 1st would have the highest score, last the lowest."

Eğer 1 yüksek puanı var ve bu yüzden skorla tarafından sipariş bir tablo geri almak istiyorsanız son düşük, sadece bu sorguyu aramak gerekir after you inserted the new row:

SELECT * FROM highscores ORDER BY score DESC

İşte bu!

Ben bir uzuv çıkmak ve bir sorgu ile bunu yapmak için hiçbir yolu olduğunu söylemek için gidiyorum. Yani soru amaçlanan düşünüyorum yoludur az SQL ifadeleri, 2 olacaktır: Bir eklemek ve bir sorgu için.

Ne LIMIT anahtar sözcüğünü kullanarak nesi var?