2016-02-19 70 views
-3

我正在嘗試製作一個簡單的網絡應用程序。我正處於創建用戶個人資料部分的階段,我堅持允許用戶上傳他們自己的個人資料圖片。請參閱下面的查詢我正在使用的查詢。試圖讓用戶上傳個人資料照片到mysql數據庫

$username = $_SESSION['username']; 

$insertImage = $db->prepare("UPDATE `members` SET `profile_pic` = ('$dbDirectory') WHERE `username` = $username"); 

$insertImage->execute($imageArray); 

我無法弄清楚如何正確地將用戶名會話添加到查詢中。目前,我剛剛得到的錯誤

「SQLSTATE [42S22]:列未找到:在 1054未知列'價值 'where子句'」。

如果我更改我的查詢。

$insertImage = $db->prepare("UPDATE `members` SET `profile_pic` = ('$dbDirectory') WHERE `profile_pic` = `profile_pic`"); 

將相同的圖像目錄路徑插入到每個用戶的'profile_pic'行中。

我很可能錯過了一些非常小的東西,但我無法解決這個問題,所以非常感謝任何指導/建議。在先進的感謝

回答

4

文本變量應該用引號引用''

$insertImage = $db->prepare("UPDATE `members` 
          SET `profile_pic` = '$dbDirectory' 
          WHERE `username` = '$username'"); 

但是你應該在你準備的查詢中使用的參數,以避免SQL注入,那麼你就不需要擔心引用文本變量這一切又通過PDO類不,例如

$stmt = $db->prepare("UPDATE `members` 
          SET `profile_pic` = :pic 
          WHERE `username` = :uname"); 

$stmt->execute(array(':pic'=> $dbDirectory, ':uname'=>$username')); 

或者

$stmt = $db->prepare("UPDATE `members` 
          SET `profile_pic` = :pic 
          WHERE `username` = :uname"); 

$stmt->bindParam(':pic', $dbDirectory, PDO::PARAM_STR); 
$stmt->bindParam(':uname', $username, PDO::PARAM_STR); 

$stmt->execute(); 
+0

感謝您對此的建議,並感謝您幫助解決我的問題。只要網站允許我,我會盡快接受你的回答。再次感謝。 –

相關問題