$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
答案 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) {