-1

我已经创建了一个登录表单,我希望该用户可以更改我创建的密码,如下所示

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))”。解决方案是什么?

4

4 回答 4

0

您的查询 ($query) 失败,因此没有产生查询资源,这是因为引号'".$_SESSION[user_name]."'

于 2013-10-29T11:33:20.477 回答
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']) . "'  ";
于 2013-10-29T11:32:39.673 回答
0

$result在您的情况下可能包含资源false以及。
当您收到 时,您会看到此消息false,表示您的查询失败。
简单的解决方案是添加检查

if ($result){
  if(mysql_num_rows($result))
  ...
} else {
  // FIXME: Handle this exception
  echo("Query has failed");
}

此外,您应该知道 mysql_query 已被弃用。考虑切换到MySQLiPDO_MySQL

更多阅读

于 2013-10-29T11:36:13.197 回答
0

利用 :

$result = mysql_query($query) or die(mysql_error());

mysql_ *函数也被贬值了。你应该使用pdomysqli

请参阅为什么我不应该在 PHP 中使用 mysql_* 函数?更多细节。

于 2013-10-29T11:36:55.403 回答