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
它不应该是
if (mysql_num_rows($update)>0) {
^^^^^^ ^
mysql_num_rows():
检索结果集中的行数。对于像SELECT或SHOW这样的语句,该命令仅对 有效,该语句返回实际结果 集。要检索受INSERT,UPDATE, REPLACE或DELETE查询影响的行数,请使用mysql_affected_rows()。
即你必须使用mysql_affected_rows在你的代码示例
更正。请再次检查更新的问题:) – Kishor 2012-04-12 09:54:13
你想用mysql_affected_rows()
而不是mysql_num_rows()
。此外,参数应该是$update
而不是$check
。
更正。请再次检查更新的问题:) – Kishor 2012-04-12 09:53:25
查看mysql_affected_rows
获取UPDATE
查询受影响的行数。 你也应该清楚什么$check
是。
为了调试您的MySQL查询问题,请尝试调试打印查询并手动执行它,例如,通过PhpMyAdmin。也许参数$id
和$key
有问题。
什么是 “$检查” 在声明中
if (mysql_num_rows($check)>0)
不应该说是 “$更新”?
if (mysql_num_rows($update)>0) {
已更正。请再次检查更新后的问题:) – Kishor 2012-04-12 09:54:23
首先检查'if($ update)';那你为什么要用'if(mysql_num_rows($ check)'?什么是'$ check'? – Marco 2012-04-12 09:44:44
已更正,请再次检查更新后的问题:) – Kishor 2012-04-12 09:52:58