数据未发送到数据库

时间:2015-08-21 08:47:46

标签: php mysql

我正在制作图片上传功能,该功能将文件名存储在数据库中,将照片存储在名为uploaded的文件夹中。这些照片正在移动到uploaded文件夹,但由于某种原因,我无法将文件名保存在数据库中。

  • 我还确保已连接到数据库并正确引用了所有列。我没有收到任何错误,数据只是没有存储在数据库中。

    if(isset($_POST['pp_submit'])){
        session_start();
            $file = $_FILES['pp_file']['name'];
            $ppf_type = $_FILES['pp_file']['type'];
            $ppf_size = $_FILES['pp_file']['size'];
            $ppf_tmpname = $_FILES['pp_file']['tmp_name'];
            $ppf_err = $_FILES['pp_file']['error'];
        $var = $_SESSION['id'];
    
       if($ppf_err > 0){ header('Location: ../profile.php');}
    
        move_uploaded_file($ppf_tmpname,"../uploaded/".$file);
        mysql_query("INSERT INTO users (profile) VALUES ('$file') WHERE id = '$var'");
    
    
    if(mysql_affected_rows()>0){
    echo "Item added successfully.<br/>";}
    else
    { echo "Item addition failed.<br/>"; }
    header("Location: ../profile.php?id=$var");
    }
    

我的问题是:为什么文件名不是通过数据库传递的?

  • 我也很好奇为什么move_uploaded_file()正在工作,而不是直接在它下面的查询。

1 个答案:

答案 0 :(得分:6)

那应该是更新查询而不是插入查询:

mysql_query("UPDATE users SET profile = '$file' WHERE id = '$var'");

另请注意:

  • 您正在使用已弃用的API。考虑切换到mysqli_*功能或使用PDO。
  • 您对SQL注入攻击持开放态度。考虑使用准备好的陈述。