我已经创建了一个登录表单,我希望用户可以更改我创建的密码,如下所示
if(isset($_SESSION['user_name']))
{
$password=$_POST['new_password'];
$query="select * from login where username = '$_SESSION[user_name]' and password='" . md5($_SESSION['password']) . "' ";
echo $query;
$result=mysql_query($query);
//echo "abc";
if(mysql_num_rows($result))
{
$row=mysql_fetch_array($result);
$pass=$row['password'];
if($pass==$password)
{
$query2="UPDATE login SET password='$password' WHERE username='$_SESSION[user_name]'";
echo $query2;
echo "Password changed successfully";
}
else
{
echo "You entered wrong current password";
}
}
}
但是警告mysql_num_rows()期望参数1是资源。即将上线“if(mysql_num_rows($ result))”。那是什么解决方案?
答案 0 :(得分:0)
改变这个:
$query="select * from login where username = '$_SESSION[user_name]' and password='" . md5($_SESSION['password']) . "' ";
要:
$query="select * from login where username = '".$_SESSION['user_name']."' and password='" . md5($_SESSION['password']) . "' ";
答案 1 :(得分:0)
您的查询($ query)失败,因此没有生成查询资源,因为引号'".$_SESSION[user_name]."'
答案 2 :(得分:0)
$result
可能包含资源和false
您收到false
后会看到此消息,表示您的查询失败
简单的解决方案是添加检查
if ($result){
if(mysql_num_rows($result))
...
} else {
// FIXME: Handle this exception
echo("Query has failed");
}
答案 3 :(得分:0)
使用:
$result = mysql_query($query) or die(mysql_error());
同样 mysql _ * 函数已弃用。您应该使用 pdo 或 mysqli 。
有关详细信息,请参阅 Why shouldn't I use mysql_* functions in PHP? 。