2017-02-24 60 views
-1

我有一個函數可以創建一個cookie並相應地用cookies數據更新一個數據庫,但我似乎無法從該函數中獲取數據庫。 is currently unable to handle this request.PHP PDO在一個函數內執行語句?

您可以理所當然地認爲正在輸入的數據包括$ db。一旦我註釋掉準備並執行插入$ db的兩行$stmt行,我就可以加載頁面。

$ db存在於我調用該函數之前需要的文件調用db.php中。我在其他頁面查詢中測試了$db,它似乎沒有問題。

function updatecookieDB($db, $email) 
{ 
    $Selector = md5($email); 
    $token = bin2hex(random_bytes(20)); 
    $salt = bin2hex(random_bytes(20)); 
    $cookiedata = $Selector.$token; 
    $Hash = md5($token.$salt); 
    setcookie('RememberMe',$cookiedata,time()+(3600*24*15),"/") 
    $query = " INSERT INTO RememberMe(email,Selector,Hash,Salt) VALUES (:email,:Selector,:Hash,:Salt) "; 
    $query_params = array (':email' => $email ,':Selector' => $Selector , ':Hash' => $Hash, ':Salt' => $salt); 

    try 
    { 
    $stmt = $db->prepare($query); 
    $stmt->execute($query_params); 
    { 
    catch(PDOException $ex) { die("Failed to run query: " . $ex->getMessage()); } 


} 

難道是因爲我沒有返回任何東西嗎?

+1

那麼,這是否$電子郵件,$選擇,$哈希和$鹽落入這個功能呢? – Option

+0

代碼的表單方面在哪裏? – Option

+1

以及如何調用該函數 –

回答

-2

我把它改成下面的,它工作正常:

$stmt = $db->prepare($query)->execute($query_params); 
+0

這和 –

+0

之前的版本基本相同是的,我不明白它爲什麼有效,另一個沒有 – denski