2012-04-12 26 views
-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."; } 

我得到一個輸出您的帳戶現在處於活動狀態。重定向到登錄頁面並將我重定向到登錄頁面。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

回答

6

它不應該是

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

0

mysql_num_rows():

檢索結果集中的行數。對於像SELECT或SHOW這樣的語句,該命令僅對 有效,該語句返回實際結果 集。要檢索受INSERT,UPDATE, REPLACE或DELETE查詢影響的行數,請使用mysql_affected_rows()。

即你必須使用mysql_affected_rows在你的代碼示例

+0

更正。請再次檢查更新的問題:) – Kishor 2012-04-12 09:54:13

1

你想用mysql_affected_rows()而不是mysql_num_rows()。此外,參數應該是$update而不是$check

+0

更正。請再次檢查更新的問題:) – Kishor 2012-04-12 09:53:25

0

查看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

0

什麼是 「$檢查」 在聲明中

if (mysql_num_rows($check)>0) 

不應該說是 「$更新」?

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

已更正。請再次檢查更新後的問題:) – Kishor 2012-04-12 09:54:23