<?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 />";
}
?>
我正在使用上面的代码来提取值。如果用户名匹配则显示值,但如果我输入错误的输入文本,它也会显示“已提取”但没有值为什么?请帮帮我???
答案 0 :(得分:2)
正如mysql_query()
函数的PHP手册条目中所述:
对于返回结果集的SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句, mysql_query()会在成功时返回resource,或
FALSE
出错了。
因此$result
变量保留了MySQL资源,而不管username
列是否匹配:使用if
测试此类资源将始终评估为 {{ 1}} (除非查询本身引发错误)。
手册继续解释:
返回的结果资源应该传递给
mysql_fetch_array()
,以及其他用于处理结果表的函数,以访问返回的数据。使用
mysql_num_rows()
查找为SELECT语句返回的行数,或使用mysql_affected_rows()
查找DELETE,INSERT,REPLACE或UPDATE语句影响的行数。
在您的情况下,您可以使用TRUE
进行测试,以确定查询是否返回了任何记录(即是否满足mysql_num_rows()
条件。)
答案 1 :(得分: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");
}