Nasıl bir mysql select ifadesi sonuç php bir değer ya da olup olmadığını kontrol etmek için?

5 Cevap php

Bir metin kutusu UserName ve bunun yanına bir Check Availability düğme var ..... Ben UserName textbox değeri ileterek durumunu kontrol ettirin ..... ama çalışmak için görünmüyor ....

İşte ben yapıyorum ne?

echo $UserName = $_GET['CheckUsername'];
$_SESSION['state'] = $State;
$queryres = "SELECT dUser_name FROM tbl_login WHERE dUser_name='$UserName'";
$result = mysql_query($queryres,$cn) or die("Selection Query Failed !!!");

if($result==true) // this condition doesn't seem to work
    {
       echo "User Name Available";
    }
else
{
        echo "Sorry user name taken";
}

5 Cevap

MySQL için girişleri kaçan emin olun. $_GET, $_POST veya Diğer süper herhangi bir veriyi doğrudan geçen güvensiz.

// Escape any quote characters in the input
$UserName = mysql_real_escape_string($_GET['CheckUsername'], $cn);
$_SESSION['state'] = $State;

$queryres = "SELECT dUser_name FROM tbl_login WHERE dUser_name='$UserName' LIMIT 1";
$result = mysql_query($queryres, $cn) or die("Selection Query Failed !!!");

if (mysql_num_rows($result) > 0) {
    echo 'User name exists in the table.';
} else {
    echo 'User name does not exist in the table.';
}
if ($result == false)
{
      echo "not available";
}
else
{
      echo "available";
}

Bir dizi içerdiği $ sonucun değeri doğru olmayacaktır, çünkü senin çalışmıyor nedenidir. Sahte Önce kontrol etmek için bildirimde tersine bunu yapabilirdi.

Ayrıca mysql_num_rows ile yapabilirsiniz

if (mysql_num_rows($queryres) > 0)
{
     echo "User name taken";
}

dan http://php.net/mysql_query,

Değerler Dönüş

SELECT, SHOW, tanımlamak, açıklamak ve resultset dönen diğer ifadeler için, mysql_query () başarı bir kaynak verir, hata veya FALSE.

Yani ile başlamak, bu size (mysql_query yanlış döndüğünde aktive olan) mysql_query üzerinde "ya da öl" çünkü ifadesi false değerlendirmek asla eğer.

Ama eğer koşul sorgu başarısız olmadığını bilmek istemiyorum çünkü, tamamen yanlış olduğunu, ancak herhangi bir sonuç döndü sanki. Bunun için muhtemelen mysql_num_rows kullanmak istiyorum.

Sadece 1 uyan adınızı olmadığını bilmek gerekir çünkü küçük bir ipucu olarak, sizin sorgunun sonuna "LİMİTİ 1" ekleyin. Sonra mysql kısa sürede yerine fazla sonuç için inci bütün tablo arama ilk maçında, vurur gibi dönecektir.

Alternatif bir yöntem olarak, bir COUNT () sorgu kullanın ve sonuç kümesinde döndürülen numarasını kontrol edebilir.

Bu soru zaten yeterli bir yanıt olsa da, sana başka bir seçenek vereceğim. Sadece IF durumda "== true" kaldırmak ve otomatik olarak bir değerin varlığı yerine bir boolean karşılaştırma için test edecek.

if($result) // this condition will now work
    {
       echo "User Name Available";
    }
else
{
        echo "Sorry user name taken";
}

Eğer kod imzasını korumak istiyorsanız bunu kullanabilirsiniz.

Sorgu yürütme sonra, sadece size Satır Sayısı dönecekleri ($ result) mysql_num_rows getirildi.