2011-11-18 104 views
-1

一切都在我的新網站工作得很好,但我不能讓這段代碼的工作:PHP/MySQL的帳號激活

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'"); 
$row = mysql_fetch_assoc($query); 
$activation = $row['activation']; 
if ($activation == '0') { 
    die('Your account is not yet active. Please check your email!'); 
    exit(); 
} 

在數據庫中,該類型是enum('0', '1')和領域名字是activation

以下是錯誤消息我得到:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result

可能有人請給我一個提示?

謝謝。

+0

'echo'實際的sql代碼,將其複製到querybrowser並查看結果。 – k102

+0

Try:mysql_query(「SELECT * FROM members WHERE useremail ='$ useremail'」)或die(mysql_error()); – dfsq

+0

請告訴我你正在轉義'$ useremail' –

回答

0

該錯誤信息顯示你的查詢是無效的:

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'"); 

你在做的$usermail任何輸入清理?

您確定您的數據庫包含該表,並且該表包含該列。

試着做一點點調試:

$query = "SELECT * FROM members WHERE useremail = '$useremail'"; 
echo $query; 

,並嘗試直接在你的數據庫(從phpMyAdmin的或東西)上運行的$query內容。

+0

它連接罰款使用$ useremail .... – Carlos

+0

@Carlos你是什麼意思,它連接好嗎?你有沒有試過我建議的? –

+0

謝謝你。它現在正常運作!!!!!你們真棒! :) – Carlos

-1

更改您的第一行:

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'") or die(mysql_error()); 

它會吐出,導致該警告的MySQL錯誤=)

你不應該假設調用mysql_query返回一個有效的結果;最好總是先測試結果,例如在我的新網站

$r=mysql_query("SELECT * YADYADA"); 
if($r && mysql_num_rows($r)>0){ 
    $row=mysql_fetch_assoc($r); 
}else{ 
    //Uh oh, something's not right~~~ throw an exception maybe? 
} 
+0

爲什麼異常爲空結果? –

+0

@ Col.Shrapnel我沒有真正拋出異常,我只是暗示了桌子上的一個選項。一個異常至少會比他的'die()'調用更優雅;) – Shad

+0

我現在看到了這個問題。謝謝。 – Carlos

0

一切工作就好了

......直到出了問題。

你必須學會​​如何處理錯誤

運行全部您的查詢至少這樣。

$query = "SELECT * FROM members WHERE useremail = '$useremail'" 
$result = mysql_query() or trigger_error(mysql_error()." ".$query); 

,你總是通知的任何錯誤,並它的原因

或執行錯誤通知任何其他方式,採用mysql_error()函數,它是世界上唯一能告訴你實際問題在哪裏。