-1
$update = mysql_query("UPDATE users SET regstatus='TRUE' WHERE username='$id' AND regstring='$key'") or die(mysql_error());
if (mysql_num_rows($check)>0)
    header("refresh:3;url=login.php");
    echo "Your account is active now. Redirecting to login page."; }

出力が表示されますあなたのアカウントは現在アクティブです。ログインページにリダイレクトし、ログインページにリダイレクトします。

ただし、の値はregstatus更新されていません。デバッグの一環として、クエリでmysql_num_rowsを確認すると、行が影響を受けていると表示されますが、値はまだ更新されません。

何か案は?列regstatusはvarcharです。

提案に従ってコードを更新しました:

 $update = mysql_query("UPDATE users SET regstatus='True' WHERE username='$id' AND regstring='$key'") or
        die(mysql_error());
    if (mysql_num_rows($update)>0)
    {
        header("refresh:3;url=login.php");
        echo "Your account is active now. Redirecting to login page.";
    }

今私は得る:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /activate.php on line 27

4

5 に答える 5

6

あるべきではない

if (mysql_num_rows($update)>0) {
                    ^^^^^^     ^
于 2012-04-12T09:44:24.600 に答える
1

mysql_affected_rows()の代わりに使用したいmysql_num_rows()。また、引数は。$updateの代わりにする必要があり$checkます。

于 2012-04-12T09:45:50.840 に答える
0

mysql_num_rows():

結果セットから行数を取得します。このコマンドは、実際の結果セットを返すSELECTやSHOWなどのステートメントにのみ有効です。INSERT、UPDATE、REPLACE、またはDELETEクエリの影響を受ける行数を取得するには、mysql_affected_rows()を使用します。

つまり、コード例でmysql_affected_rowsを使用する必要があります

于 2012-04-12T09:45:30.807 に答える
0

クエリmysql_affected_rowsの影響を受ける行の数を取得する方法を確認してください。UPDATEまた、何$checkであるかを明確にする必要があります。

MySQLクエリの問題をデバッグするには、クエリをデバッグして印刷し、PhpMyAdminなどを使用して手動で実行してみてください。$idおそらく、パラメータとに何か問題があります$key

于 2012-04-12T09:46:38.207 に答える
0

ステートメントの「$check」とは

 if (mysql_num_rows($check)>0)

それは「$update」であるべきではありませんか?

 if (mysql_num_rows($update)>0)   {
于 2012-04-12T09:47:47.363 に答える