2016-02-19 144 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

感谢您对此的建议,并感谢您帮助解决我的问题。只要网站允许我,我会尽快接受你的回答。再次感谢。 –

相关问题