Mysql Num Rows出错,但数据库已更新

时间:2013-06-30 12:18:52

标签: php mysql mysql-num-rows

我的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为资源,布尔值为.....

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

谢谢。

3 个答案:

答案 0 :(得分:3)

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

  

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

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

$num_rows = mysql_affected_rows();

Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 1 :(得分:1)

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

答案 2 :(得分: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;
}