-1

以下のように作成したパスワードをユーザーが変更できるようにするログインフォームを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

$resultあなたの場合、リソースも含まれている可能性がありますfalse
を取得したときにこのメッセージが表示されます。これfalseは、クエリが失敗したことを意味します。
簡単な解決策は、チェックを追加することです

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

また、mysql_query は非推奨であることを知っておく必要があります。MySQLiまたはPDO_MySQLへの切り替えを検討してください

もっと読む

于 2013-10-29T11:36:13.197 に答える
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

クエリ ($query) が失敗しているため、引用符が原因でクエリ リソースが生成されません'".$_SESSION[user_name]."'

于 2013-10-29T11:33:20.477 に答える
0

使用する :

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

また、mysql_*関数は減価償却されます。pdoまたはmysqliを使用する必要があります。

PHP で mysql_* 関数を使用すべきではない理由を参照してください。詳細については。

于 2013-10-29T11:36:55.403 に答える