0
<?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 />";
}
?>

我正在做上面的代码来提取值。如果用户名匹配它显示值但如果我输入错误的文本它也显示“提取”没有值为什么?请帮我???

4

2 回答 2

2

如函数的 PHP 手册条目中所述mysql_query()

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

$result因此,无论列上是否存在匹配项,您的变量都包含一个 MySQL 资源username:使用测试这样的资源if将始终评估为TRUE(除非查询本身引发错误)。

手册继续解释:

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

用于mysql_num_rows()查明 SELECT 语句返回了多少行,或者mysql_affected_rows()查明有多少行受到 DELETE、INSERT、REPLACE 或 UPDATE 语句的影响。

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

于 2012-08-25T12:03:33.120 回答
0

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

$sql="SELECT * FROM userlogin WHERE username='".$uname."'";
$result=mysql_query($sql)
if(mysql_num_rows($result)>0)
{
echo("Extracted<br>");
}
else
{
echo("NOT Extracted");
}
于 2012-08-25T12:08:56.530 回答