veri bir tablo ile mevcut olmadığını görmek için kontrol

4 Cevap php

Nasıl bir tablo içine bakarak ve bir satır varsa görmek için arama gitmek yok. arkasında gorund geri tablo düşman denilmektedir. Her satır benzersiz bir kimliği vardır ve AUTO_INCREMENT ayarlanır. Her satır da monsterid denilen eşsiz bir değere sahiptir. canavar kimliği AUTO_INCREMENT değildir.

Bir canavar öldüğünde satır silinir ve yeni bir satır değiştirilir. böylece kimliği her zaman değişiyor. de monsterid çok değişti.

I am using in php the $_GET method and the monsterid is passing through it, basically i am trying to do this

$ MonsterID = 334322 / / bu $ _GET geçti id

checkMonsterId = "canavar id düşmanları tablo içinde varsa görmek için kontrol edin"

if monsterid exist then
{RUN PHP}

else
{RUN PHP}

Artık netlik ihtiyacınız varsa isteyin. ve şimdiden yardım için teşekkürler.

4 Cevap

Kullan count! O> 0 dönerse, o değil, başka, var.

select count(*) from enemies where monsterid = 334322

Sen (veritabanına bağlandıktan sonra) bu suretle PHP kullanmak istiyorsunuz:

$monsterID = mysql_real_escape_string($monsterID);
$res = mysql_query('select count(*) from enemies where monsterid = ' . $monsterid) or die();
$row = mysql_fetch_row($res);
if ($row[0] > 0)
{
    //Monster exists
}
else
{
    //It doesn't
}

`

$ Monsterid = mysql_real_escape_string ($ _GET ['monsterid']);

$ Sorgu = intval (monsterid = '$ monsterid') düşman DAN mysql_query ("SELECT count (*));

if (mysql_result > 0) { // monster exists } else { // monster doesn't exist } ?>`

mysql_real_escape_string önlemek için önemlidir SQL injection.

Gibi, sayısını kullanın

monsterid = 334322 düşmanların sayısı (*) seçin

Ancak tabloya monsterid üzerinde bir dizin ekledim emin olmak için emin olun. Nedeni yok, ve bu birincil anahtar değilse, o zaman rdbms tam tablo taraması sorun zorunda olacak olan - her satırı okumak - Size değerini geri vermek. Küçük veri setlerinde tablo muhtemelen yine çekirdek içinde oturup bu önemli değil, ama satır sayısı önemli olur ve tarama yapmak için diski vuruyorlar kez hız farkı kolayca iki büyüklük emir veya daha fazla olabilir.

Satır sayısı ise very sonra değil indeksleme verileri eklerken olmayan birincil anahtar dizini ek yükü gerektirir kullanma gibi rasyonel küçük, ancak bu (ben düzenli kullandım müşterileri etkilemek kesin bir karar olmalıdır bir dizin eklemek için sql bir satır sana guru satın alacak kadar oldukça şaşırtıcı - kodlayıcı onları yaratan ancak verilerin gerçek hacimleri ile yüklendiğinde bir tarama sonradan yavaş zaman ince tablolar için dizin ekleyerek veritabanları anlamayan bir programcı Müşterilerinizin gözünde statü, sizin neden) yine onun sistem kullanılabilir yaptı.

Eğer Alt Seç'i kullanarak veritabanı karşı daha karmaşık sorgular, canavar yok tüm yerleri bulmak gibi bir şey yapıyorsanız o zaman sql fıkra EXISTS kullanımını bakmak. Bu genellikle programcılar (günaha gerçek değerlerin sayısını döndürmek için) ve genellikle alternatiflere göre daha hızlı kullanarak tarafından gözardı edilir.

Basit:

monsterid = 334322 düşmanlarından 1 seçin

Bir satır döndürür, değilse, değil mi, bir satır var.