可能重复:
mysql_num_rows(): supplied argument is not a valid MySQL result resource
我使用简单的自创php脚本将密码更改为我的wow服务器的网站 这是错误:
“警告:mysql_num_rows()期望 参数1是资源,布尔值 在D:\ wamp \ www \ password.php中给出 第24行“
密码脚本:
if (isset($_POST['submit'])){
change_db($realm_DB);
$loginusername = "$acc_name";
$loginpass = $_POST['password'];
$sha_pass_hash = sha1(strtoupper($loginusername) . ":" . strtoupper($loginpass));
$qry=mysql_query("UPDATE `$realm_DB`.`account` SET `sha_pass_hash`='$sha_pass_hash', `v`='', `s`='', WHERE (`username`='$loginusername');");
if (mysql_num_rows($qry) == 1){
?>
< script type="text/javascript" >
{
alert("Successfully changed password!");
}
< /script>
< ?php
}
}
?>
我为脚本类型javascript和php标签添加了空格,因为你可以看到它
无论如何我在“$ qry”之后添加了“或trigger_error(mysql_error()。$ sql)”以查看sql错误。
这是:
“注意:您的SQL中有错误 句法;检查手册 对应于您的MySQL服务器 用于正确语法的版本 在'WHERE(
username
='ADMIN')'附近 D:\ wamp \ www \ password.php上的第1行 第23行“
我不知道导致这些错误的原因是因为我可以注册并登录我的网站 给你一个帮助!
答案 0 :(得分:2)
在您的SQL中,您的,
子句之前有WHERE
无效。
此外,mysql_query
会为true
查询而不是资源返回false
或UPDATE
。您应该使用mysql_affected_rows
来确保行已更新而不是 mysql_num_rows
。
答案 1 :(得分:1)
从快速查看它,你有一个逗号,不应该在WHERE关键字之前:
s='' , WHERE
答案 2 :(得分:1)
我建议您的查询抛出错误(即您的SQL字符串无效),因此$ qry变量包含FALSE而不是您期望的结果对象。
你应该先检查一下。如果为FALSE,则可以使用mysql_error()
查找实际错误。这将帮助您调试SQL字符串。