我的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为资源,布尔值为.....
代码有什么问题?因为我没有看到任何错误。
谢谢。
答案 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,并使用PDO或MySQLi - 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;
}