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."; } 

我得到一个输出您的帐户现在处于活动状态。重定向到登录页面并将我重定向到登录页面。mysql更新不起作用,不返回任何错误

但是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

+1

首先检查'if($ update)';那你为什么要用'if(mysql_num_rows($ check)'?什么是'$ check'? – Marco 2012-04-12 09:44:44

+0

已更正,请再次检查更新后的问题:) – Kishor 2012-04-12 09:52:58

它不应该是

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

提示:D让我在我的代码中修复它,然后重试。 – Kishor 2012-04-12 09:45:43

+0

已更正。请再次检查更新的问题:) – Kishor 2012-04-12 09:53:11

+1

@Kishor你还没有改正...你用'mysql_affected_rows'替换了函数'mysql_num_rows',它们取不同的参数 - 或者对你的连接变量使用'mysql_affected_rows'或者用你的结果'mysql_num_rows' – ManseUK 2012-04-12 09:56:17

mysql_num_rows():

检索结果集中的行数。对于像SELECT或SHOW这样的语句,该命令仅对 有效,该语句返回实际结果 集。要检索受INSERT,UPDATE, REPLACE或DELETE查询影响的行数,请使用mysql_affected_rows()。

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

+0

更正。请再次检查更新的问题:) – Kishor 2012-04-12 09:54:13

你想用mysql_affected_rows()而不是mysql_num_rows()。此外,参数应该是$update而不是$check

+0

更正。请再次检查更新的问题:) – Kishor 2012-04-12 09:53:25

查看mysql_affected_rows获取UPDATE查询受影响的行数。 你也应该清楚什么$check是。

为了调试您的MySQL查询问题,请尝试调试打印查询并手动执行它,例如,通过PhpMyAdmin。也许参数$id$key有问题。

+0

更新了问题。我可以看到$ id和$ key有正确的值。但即使它们有错误的值,它也应该在不执行正确查询的情况下输出结果。想知道为什么。 – Kishor 2012-04-12 10:05:09

+0

是的,这是因为'mysql_num_rows'无法获得'UPDATE'查询受影响的行数。所以,只需用'mysql_affected_rows()'替换'mysql_num_rows($ update)'' – diewie 2012-04-12 10:10:20

什么是 “$检查” 在声明中

if (mysql_num_rows($check)>0) 

不应该说是 “$更新”?

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

已更正。请再次检查更新后的问题:) – Kishor 2012-04-12 09:54:23