【问题标题】:Update value in database using PHP使用 PHP 更新数据库中的值
【发布时间】:2020-07-30 08:49:16
【问题描述】:

这就是表格users 的样子:

---------------------------------------------------
|  ID  |  user  |             avatar              |
|  3   |  ane22 |     /img/default-avatar.png     |
|  4   |  cuz33 |     /img/default-avatar.png     |

上传按钮:

<form method="POST" 
              action="" 
              enctype="multipart/form-data"> 
            <input type="file" 
                   name="uploadfile" 
                   value="" /> 
  
            <div> 
                <input type="submit" name="action" value="Upload"> 
            </div> 
        </form> 

这就是我尝试更新当前用户的个人资料图片的方式:

} else if ($_POST['action'] == 'Upload') {
    //action for delete
    error_reporting(0); 
      $msg = ""; 
  $name = $_SESSION["user"];/* user */
  
  // If upload button is clicked ... 
  if (isset($_POST['upload'])) { 
  
    $filename = $_FILES["uploadfile"]["name"]; 
    $tempname = $_FILES["uploadfile"]["tmp_name"];     
        $folder = "image/".$filename; 
  
        // Get all the submitted data from the form 
        $sql = "UPDATE users SET avatar='" . $filename . "' WHERE user='" . $name . "'"; 
  
        // Execute query 
        mysqli_query($link, $sql); 
          
        // Now let's move the uploaded image into the folder: image 
        if (move_uploaded_file($tempname, $folder))  { 
            $msg = "Image uploaded successfully"; 
        }else{ 
            $msg = "Failed to upload image"; 
      } 
  } 
  $result = mysqli_query($link, "SELECT * FROM users"); 

当我按下upload 按钮时,什么也没有发生。我的桌子也没有任何变化。有什么建议吗?

【问题讨论】:

  • 你确定isset($_POST['upload']) 是正确的吗?你检查过$_POST 包含的内容吗?
  • WHERE user='" . $id . "'你确定吗?
  • 您的查询易受 SQL 注入攻击,请考虑使用prepared statements
  • 是否有上传文件?
  • 您可以尝试先上传图片再更新到数据库。如下所示: if (move_uploaded_file($tempname, $folder)) { $msg = "图片上传成功"; mysqli_query($link, $sql); }else{ $msg = "图片上传失败"; }

标签: php html mysql


【解决方案1】:

您的表单没有任何操作,如果表单没有执行任何操作,您希望它如何提交某些内容... 还有,如果你在其中存储一个名称,为什么要命名一个变量 $id...这就是为什么“WHERE user = $id”起作用的原因,因为它不是一个 id 它是一个名字... 在 stackoverflow 中提问之前,请尝试找出您自己的错误,或者您的错误是否已经存在

【讨论】:

  • 伙计,我没有收到任何错误消息,这就是原因。我将 $id 命名为什么并不重要,因为值仍然是名称。
  • 当然您不会收到任何错误消息,因为如果表单没有任何操作,它将不会加载任何内容。 PHP 不会把它当作一个错误,因为它可能是故意的,但是如果你想让你的表单上传一些东西,它必须得到一个链接到一些东西
  • 什么意思?你没看到按钮吗?
  • 该按钮具有提交操作,它不是表单的操作,它就像一个 onclick 监听器,它只是在您单击它时提交到您的表单,所以它应该充当表单的“发送者”,但如果表单没有接收者,则无法发送任何内容
  • 您正在尝试发送数据,但没有说明应该从哪里/谁得到它,这就是问题所在。您应该在表单的属性“action =”上声明它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多