2017-04-16 56 views
0

請朋友們幫助我。我找不到錯在哪裏。我需要更新的所有變量都很好,但實際的更新語句返回有錯誤說未被捕獲的錯誤:調用成員函數prepare()null

"Uncaught Error: Call to a member function prepare() on null"

下面是我的一小段php代碼。

 $name_image=basename($_FILES[$idx]["name"]["$key"]);   
     $time = date("Y-m-d H:i:s");   
     $email_insert = $_SESSION['email']; 
     $sql_upl ="UPDATE forepost_users SET profile_picture ='$name_image',lastmodified ='$time' WHERE email_address=?";    
     $SQL_statement_upl= $this->conn->prepare($sql_upl); 
     $SQL_statement_upl->bindParam(1,$email_insert); 
     $SQL_statement_upl->execute(); 
+0

這'SET profile_picture = '$ name_image',上次更改時間= $時間''不會將'$ name_image'和'$ time'值插入到您準備好的語句中。將它們作爲參數綁定? –

+0

感謝讓我試試 –

回答

0

至少有兩個問題。

  1. $conn未初始化這是因爲$conn爲空,爲什麼你得到這個錯誤,你試圖調用null對象的成員函數。

如果您需要協助解決問題,請包括您的$conn初始化代碼。

  1. 您準備好的聲明無效。

SET profile_picture ='$name_image',lastmodified ='$time'

UPDATE聲明將不插入的$name_image$time值在SQL語句的這一部分。請記住,這是一個「準備好的語句」,因此您要創建一個將多次執行的SQL模板。每次執行時,都會通過綁定參數將值傳遞到SQL語句中。

因此改變你準備語句:

"UPDATE forepost_users SET profile_picture = ?, lastmodified = ? WHERE email_address = ?"

執行之前,然後綁定每個參數:

$SQL_statement_upl->bindParam(1,$name_image); 
$SQL_statement_upl->bindParam(2,$time); 
$SQL_statement_upl->bindParam(3,$_email_insert); 
+0

我已經嘗試使用綁定參數,如上所述,但我一直得到相同的錯誤 –

+0

你檢查過你的三個變量有值嗎?他們中的任何一個是空的?你的數據庫連接'$ conn'是否已經被初始化了? –

+0

是啊我的值不是空的,但最後修改的列在我的數據庫中是空的,這可能是一個問題嗎? –

相關問題