0

可能重复:
mysql_num_rows():提供的参数不是有效的 MySQL 结果资源

我正在使用简单的自行创建的 php 脚本来更改我的 wow 服务器网站的密码。
这是错误:

“警告:mysql_num_rows() 期望参数 1 是资源,布尔值在第 24 行的 D:\wamp\www\password.php 中给出”

密码脚本:

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" 之后添加了 "or trigger_error(mysql_error().$sql)" 以查看 sql 错误。
这里是:

“注意:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以username在 D:\wamp\www\password 中的第 1 行的 'WHERE (='ADMIN')'附近使用正确的语法.php 在第 23 行"

我不知道是什么导致了这些错误,因为我可以注册并登录我的网站。
帮帮忙!

4

3 回答 3

2

在您的 SQL 中,您有一个无效的,before子句。WHERE

此外,mysql_query 将返回truefalse用于UPDATE查询而不是资源。您应该使用mysql_affected_rows来确保该行没有 mysql_num_rows被更新。

检查文档mysql_query

于 2010-09-21T15:54:52.953 回答
1

通过快速查看它,您在 WHERE 关键字之前有一个不应该出现的逗号:

s='' , WHERE
于 2010-09-21T15:49:44.090 回答
1

我建议您的查询引发错误(即您的 SQL 字符串无效),因此 $qry 变量包含 FALSE 而不是您期望的结果对象。

你应该先检查一下。如果它是 FALSE,那么您可以使用它mysql_error()来查找实际的错误。这将帮助您调试 SQL 字符串。

于 2010-09-21T15:51:43.787 回答