为什么在 mysql 上总是获得结果的正值


Why getting always positive value for result on mysql?

<?php
$uname=$_POST['uname'];
$pwd=$_POST['pwd'];
$result="";
echo($uname.'</br>');
echo($pwd);
$con=mysql_connect("localhost","root","");
mysql_select_db("user_login_test",$con);
$sql="SELECT * FROM userlogin WHERE username='".$uname."'";
if($result=mysql_query($sql))
{
echo($result);
echo("Extracted<br>");
}
else
{
echo("NOT Extracted");
}
while($row = mysql_fetch_array($result))
{
    echo $row['username'] . " " . $row['password'];
    echo "<br />";
}
?>

我正在执行上述用于提取值的代码。如果用户名匹配,它会显示值,但如果我给出错误的输入文本,它也会显示没有值的"提取",为什么?请帮帮我???

如 PHP 手册条目中mysql_query()

函数所述:

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

因此,无论username列上是否存在匹配项,您的$result变量都包含 MySQL 资源:使用 if 测试此类资源将始终计算结果为 TRUE (除非查询本身抛出错误(。

该手册继续解释:

返回的结果资源应该传递给mysql_fetch_array(),以及其他用于处理结果表的函数,以访问返回的数据。

使用 mysql_num_rows() 了解为 SELECT 语句或mysql_affected_rows()返回了多少行,以找出受 DELETE、INSERT、REPLACE 或 UPDATE 语句影响的行数。

在您的情况下,您可以使用mysql_num_rows()进行测试,以确定查询是否返回了任何记录(即是否满足WHERE条件(。

您为提取用户名编写了错误的逻辑。我已经修改了您的代码检查它。

$sql="SELECT * FROM userlogin WHERE username='".$uname."'";
$result=mysql_query($sql)
if(mysql_num_rows($result)>0)
{
echo("Extracted<br>");
}
else
{
echo("NOT Extracted");
}