function login($username,$password){
$query = "select * from userdata where un=".$username ." and pw=".$password;
$result=mysql_query($query);
if(empty($result)){     //一开始这样里就这样写,结果无论敲什么 都登录成功
exit('账号不存在或密码出错,登录失败!');
}
else{
echo "登录成功!";
}
}
之后加了mysql_fetch_array()这一句来获取结果,发现就正常了
随便敲叻一个不存在的账号密码 看了一下mysql_query() 和mysql_fetch_query()找不到的时候的返回值
1.请教一下 mysql_query()执行SQL语句的时候 什么时候会返回false?
2.这里面resource of......这个值究竟是什么意思?
3.一般调用完mysql_query(),是不是要调用mysql_fetch_xxx()来获取结果??

解决方案 »

  1. 1.  以下引自手册
    mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。因此,对于你select语句,只要sql语句没有错误,将返回一个资源标识符,但是资源标识符不是空,因此永远不可能进入if里面2 指的是mysql资源集3,这个不一定,具体看你什么需求,其实对于你情况,用mysql_num_rows() 最佳. 
      

  2. 说点其他的,如果我是你,这句话:$query = "select * from userdata where un=".$username ." and pw=".$pasry ;我就会这么写:$query= "select * from userdata where un=$username and pw=$password";双引号滤不掉变量,我讨厌点点....
      

  3. $query= "select * from userdata where un={$username} and pw={$password}";
    我会这样写
      

  4. 手册没看什么,也来学习下,这种情况一般我会用mysql_num_rows();
      

类似问题 »