如何在id=?…的位置插入imagename。。。在mySQL[PHP]中

如何在id=?…的位置插入imagename。。。在mySQL[PHP]中,php,html,mysql,sql,pdo,Php,Html,Mysql,Sql,Pdo,我正在尝试将头像图像上传到MySQL数据库。我的代码工作正常,但问题在于SQL查询 这是我的代码: <?php if(isset($_POST)){ if(isset($_FILES['avatar'])){ $errors= array(); $file_name = $_FILES['avatar']['name']; $file_size =$_FILES['avatar']['size']; $file_tmp =$_FILE

我正在尝试将头像图像上传到MySQL数据库。我的代码工作正常,但问题在于SQL查询

这是我的代码:

<?php
if(isset($_POST)){
    if(isset($_FILES['avatar'])){
      $errors= array();
      $file_name = $_FILES['avatar']['name'];
      $file_size =$_FILES['avatar']['size'];
      $file_tmp =$_FILES['avatar']['tmp_name'];
      $file_type=$_FILES['avatar']['type'];

//print_r($_FILES['avatar']['name']); 

  $file_ext = pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION);


      //$file_ext=strtolower(end(explode('.',$_FILES['avatar']['name'])));

      $expensions= array("jpg","gif","jpeg","png","bmp");

      if(in_array($file_ext,$expensions)=== false){
         $errors[]="extension not allowed, please choose a JPG, GIF, BMP or PNG formats...";
      }

      if($file_size > 8000000){
         $errors[]='File size must be excately 8 MB';
      }
//print_r($file_tmp); exit;
      if(empty($errors)==true){
          $randname = (rand(0,1000));
          $file_data=date("d-m-Y-H-i-s");
          $file_name=$file_data.$randname;
         move_uploaded_file($file_tmp,"avatars/".$file_name);
         echo "Success";
        $currentsessionid = $_SESSION["userid"];
        $query = $conn->prepare("UPDATE users SET
avatar = ?, WHERE id = ?");
$insert = $query->execute(array(
      "$file_name","$currentsessionid"
));
      }else{
         print_r($errors);
      }
   }
} } ?>  


仔细查看SQL查询,我有表
users
和列
id
avatar
。。。avatar列是
varchar
,我只想将文件名放在
avatar
中,其中
当前登录的用户id

您的insert语句中有一个错误

插入的内容必须如下所示:

INSERT INTO users (avatar, id) VALUES('avatar.png', $sessionid)

您向我们展示的代码中没有
session\u start()
,也没有初始化数据库连接的内容。你也没有说问题出在哪里

您应该检查
$conn->prepare()
$query->execute()
中的返回值。如果它们是假的,那么你应该轮询错误,如果你自己不能解决问题,那么在这里引用它们

插入用户集avatar=?,其中id=

…不是SQL。您混淆了INSERT的语法和UPDATE的语法。jiGL提供了如何正确编写插入的示例。由于您可能在
users
中已经有一个代表该用户的重排序,并且希望将其更改为包括化身路径:

UPDATE users SET avatar = ? WHERE id = ?

顺便说一句-您正在生成的文件名(感谢用户提供)没有扩展名,因此很难再次提供。

您的insert语句是错误的。
insert
中有一个insert正在添加一条新记录,因此它以前不存在。也许您需要一个
更新
?它应该是一个更新语句
update s set s.avatar=?从用户s那里s.id=?
…@chris85 No dude正如您所看到的,我正在文件夹中存储化身,我只想将
$file\u name
添加到
化身
列,其中
当前会话id
@JayBlanchard yes插入集有效,但我怀疑这就是他在本案中所寻找的。那么最好的方法就是使用REPLACE-INTOWhy?…你能详细说明一下吗?我不想插入
id
我想更新
avatar
其中
id
我从他的第一篇帖子中就困惑了,他想插入,我会更好地解释你1-我有
会话\u start()
$\u会话[“用户ID”]
。。。我的代码是:
$currentsessionid=$\u SESSION[“userid”];$updateavatar=$conn->prepare(“更新用户设置化身=?,其中id=?”$insert=$updateavatar->execute(数组(“$file\u name”),“$currentsessionid”