-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 回答