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