mysql UPDATE不工作,不返回任何错误

时间:2012-04-12 09:41:18

标签: php mysql

$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

5 个答案:

答案 0 :(得分:6)

不应该是

if (mysql_num_rows($update)>0) {
                    ^^^^^^     ^

答案 1 :(得分:1)

您想使用mysql_affected_rows()代替mysql_num_rows()。此外,参数应为$update而不是$check

答案 2 :(得分:0)

mysql_num_rows():

  

从结果集中检索行数。这个命令只是   对于返回实际结果的SELECT或SHOW等语句有效   组。要检索受INSERT,UPDATE影响的行数,   REPLACE或DELETE查询,使用mysql_affected_rows()。

即。你必须在代码示例中使用mysql_affected_rows

答案 3 :(得分:0)

查看mysql_affected_rows以获取UPDATE查询的受影响行数。 您还应该明确$check是什么。

为了调试MySQL查询问题,尝试调试打印查询并手动执行,例如通过PhpMyAdmin。参数$id$key可能有问题。

答案 4 :(得分:0)

声明中的“$ check”是什么

 if (mysql_num_rows($check)>0)

不应该是“$ update”?

 if (mysql_num_rows($update)>0)   {