2013-04-04 117 views
-1

我已經將我的激活腳本從mysql轉換爲mysqli,但是我的激活腳本在電子郵件中單擊鏈接後沒有更新數據庫。這是我的舊代碼成員激活函數給出可捕獲的致命錯誤

function activate($email, $email_code) { 
global $myConnection; 
$email = mysqli_real_escape_string($email); 
$email_code = mysqli_real_escape_string($email_code); 

if (mysqli_result(mysqli_query($myConnection, "SELECT COUNT(`mem_id`) FROM `members` WHERE `mem_email` = '$email' AND `email_code` = '$email_code' AND `mem_emailactivated` = 0"), 0) == 1) { 
    mysqli_query($myConnection, "UPDATE `members` SET mem_emailactivated = 1 WHERE `mem_email` = '$email'"); 
    return true; 
} else { 
    return false; 
} 
} 

這是我的新代碼

function activate($email, $email_code) { 
$myNewConnection = myConnection(); 
$email = mysqli_real_escape_string($myNewConnection, $email); 
$email_code = mysqli_real_escape_string($myNewConnection, $email_code); 
$query = mysqli_query($myNewConnection, "SELECT COUNT(`mem_id`) FROM `members` WHERE `mem_email` = '$email' AND `email_code` = '$email_code' AND `mem_emailactivated` = '0'"); 
$result = mysqli_num_rows($myNewConnection, $query); 
echo $query; 
exit(); 
if ($result == 1) { 
    $sql = "UPDATE `members` SET mem_emailactivated = 1 WHERE `mem_email` = '$email'"; 
    $query = mysqli_query($myConnection, $sql) or die(mysql_error($myConnection)); 
    return true; 
} else { 
    return false; 
} 
} 

如果我附和了查詢,你可以在我的代碼中看到我的錯誤

Catchable fatal error: Object of class mysqli_result could not be converted to string in /homepages/24/d156351352/htdocs/test/storescripts/users.php on line 211 

然而我很困惑,因爲我沒有在函數或查詢中使用mysqli_result,所以我不確定錯誤在哪裏

+0

哪一行是211? – 2013-04-04 12:15:05

+0

@MarcelKorpel其中我回應查詢 – jhetheringt7 2013-04-04 12:18:16

+0

@MarcelKorpel'echo $查詢;'是行211 – 2013-04-04 12:18:33

回答

-1

我越來越困惑與mysqli的,在哪裏建立連接。當mysqli_num_rows中有$ myNewConnection時,它不應該在那裏。它應該看起來像這樣

function activate($email, $email_code) { 
$myNewConnection = myConnection(); 
$email = mysqli_real_escape_string($myNewConnection, $email); 
$email_code = mysqli_real_escape_string($myNewConnection, $email_code); 
$query = mysqli_query($myNewConnection, "SELECT COUNT(`mem_id`) FROM `members` WHERE `mem_email` = '$email' AND `email_code` = '$email_code' AND `mem_emailactivated` = '0'"); 
$result = mysqli_num_rows($query); 
print_r ($result); 
exit(); 
if ($result == 1) { 
$sql = "UPDATE `members` SET mem_emailactivated = 1 WHERE `mem_email` = '$email'"; 
$query = mysqli_query($myConnection, $sql) or die(mysql_error($myConnection)); 
return true; 
} else { 
return false; 
} 
} 
+0

您已經被告知,如何根據數據庫驗證用戶。但由於某種原因,你繼續垃圾郵件的同一個問題,使用任何隨機代碼,但只有一個給你 – 2013-04-04 12:29:23

+0

我純粹是問什麼錯誤Catchable致命錯誤:類mysqli_result的對象無法轉換爲/ homepages中的字符串第211行是/24/d156351352/htdocs/test/storescripts/users.php。完全不同的問題 – jhetheringt7 2013-04-04 12:55:16

0

因爲SELECT查詢resultarray使用print_r查看結果

print_r($query); 
+0

打印$查詢變量沒有意義。 – 2013-04-04 12:25:02

+0

@YourCommonSense OP希望查看結果,因爲他使用'echo $ query;'。但'$ query'是數組,因爲這個答案是有效的。 – 2013-04-04 12:27:09

相關問題