0

重複の可能性:
mysql_num_rows(): 指定された引数は有効な MySQL 結果リソースではありません

簡単な自己作成の php スクリプトを使用して、パスワードを自分の wow サーバーの Web サイトに変更しています。
エラーは次のとおりです。

「警告: 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 構文にエラーがありますusername。D:\wamp\www\password の 1 行目の 'WHERE ( ='ADMIN')' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 23 行目の .php"

サイトに登録してログインできるため、これらのエラーの原因がわかりません。
助けて!

4

3 に答える 3

2

SQLには、無効な句の,前があります。WHERE

また、リソースではなくクエリに対してまたはをmysql_query 返します。行が更新されていないことを確認するために使用する必要があります。truefalseUPDATEmysql_affected_rows mysql_num_rows

のドキュメントを確認してくださいmysql_query

于 2010-09-21T15:54:52.953 に答える
1

クエリがエラーをスローしている (つまり、無効な SQL 文字列がある) ことをお勧めします。したがって、$qry 変数には、期待する結果オブジェクトではなく FALSE が含まれています。

最初にこれを確認する必要があります。FALSE の場合は、mysql_error()実際のエラーを見つけるために使用できます。これは、SQL 文字列のデバッグに役立ちます。

于 2010-09-21T15:51:43.787 に答える
1

ざっと見てみると、WHERE キーワードの直前にあるはずのないコンマがあります。

s='' , WHERE
于 2010-09-21T15:49:44.090 に答える