0

我有一些关于我的 php 代码的 php 问题

我创建了更新数据库的函数,用于更改密码。这是我的语法

function changePassword($username, $password, $salt){   
$query = "UPDATE mt_user SET password = '". $password ."' , salt = '". $salt . "' WHERE username = '". $username ."'";
$result = mysql_query($query);
    if ($result == false){
        $num_rows = mysql_error();
    } else {
        $num_rows = mysql_num_rows($result);
    }
mysql_close();
return $num_rows;
}

我通过创建一些脚本来尝试这个功能:

    echo changePassword('user1','test','test_salt');

数据库值已更新,但函数显示一些警告

警告:mysql_num_rows() 期望参数 1 是资源,布尔值在.....

代码有什么问题?因为我没有看到任何错误。

谢谢你。

4

3 回答 3

3

mysql_num_rows()这里是错误的功能,因为它是做什么的

从结果集中检索行数。此命令仅对返回实际结果集的SELECTSHOW等语句有效。

要查看更改了多少行,请使用mysql_affected_rows().

$num_rows = mysql_affected_rows();

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-06-30T12:21:06.790 回答
1

对于更新和插入查询,您需要使用mysql_affected_rows. mysql_num_rows 仅适用于 select 语句。

于 2013-06-30T12:21:47.977 回答
0

一点建议:将mysql替换为mysqli。它更安全。这个例子就是这个。

function changePassword($username, $password, $salt){   
$query = "UPDATE mt_user SET password = '". $password ."' , salt = '". $salt . "' WHERE username = '". $username ."'";
$result = mysqli_query($connection,$query);
    if ($result){
    $num_rows = mysqli_affected_rows($connection);        
    } else {
        $num_rows = mysqli_error($connection);
    }
mysql_close();
return $num_rows;
}
于 2013-06-30T14:11:33.427 回答