如何在php中检查mysql select语句结果是否有值?

时间:2010-05-08 11:16:46

标签: php mysql select if-statement

我旁边有一个文本框UserName和一个Check Availability按钮.....我通过传递UserName文本框值来检查可用性.....但它没有似乎工作......

这是我在做什么?

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";
}

6 个答案:

答案 0 :(得分:15)

请确保您正在逃避MySQL的输入。直接从$_GET$_POST或任何其他超级全球传递数据是不安全的。

// 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.';
}

答案 1 :(得分:4)

if ($result == false)
{
      echo "not available";
}
else
{
      echo "available";
}

你的原因不起作用是因为$ result的值不是真的,因为它包含一个数组。你可以通过反转语句来先检查错误。

你也可以用mysql_num_rows

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

答案 2 :(得分:1)

来自http://php.net/mysql_query

  

返回值

     

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

首先,你的if语句永远不会评估为false,因为你在mysql_query上有“或死”(当mysql_query返回false时会激活)。

但是你的if条件完全错了,因为你不想知道查询是否失败,但是是否返回了任何结果。为此你可能想要使用mysql_num_rows。

作为一个小提示,由于您只需要知道是否有1个匹配的用户名,请在查询结尾添加“LIMIT 1”。然后mysql会在第一次匹配时返回,而不是搜索整个表以获得更多结果。

作为替代方法,您可以使用COUNT()查询,并检查结果集中返回的数字。

答案 3 :(得分:1)

虽然这个问题已经有了足够的答案,但我会给你另一种选择。只需删除IF条件中的“== true”,它将自动测试是否存在值而不是布尔值比较。

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

如果要保留代码的签名,可以使用此方法。

答案 4 :(得分:1)

执行查询后,只需要返回mysql_num_rows($ result),即可获取行数。

答案 5 :(得分:1)

$queryres = "SELECT dUser_name FROM tbl_login WHERE dUser_name='$UserName'";
$result = mysql_query($queryres,$cn) or die("Selection Query Failed !!!");
if (mysql_num_rows($result))
{
echo "Username available";
}
else
{
echo "Username not available";
}