PHP表单文件上传到Mysql和服务器

Posted

技术标签:

【中文标题】PHP表单文件上传到Mysql和服务器【英文标题】:PHP form file upload to Mysql and to server 【发布时间】:2015-10-24 00:46:24 【问题描述】:

我希望有人能帮助我完成我正在做的一个小项目。

它的基本原理是我有一个带有文件上传的 php 表单,我想将它提交到 mysql 并将文件上传到我的上传文件夹,以便它在服务器上。

我目前已设置所有 PHP 表单并将所有文本提交到 mysql,我正在努力解决的问题是将文件上传部分到服务器并将上传的文件链接到 mysql。我希望这是有道理的。

这是我目前的代码:

    <!-- PHP CONNECTION -->
<?php include 'db-connect.php';

$sql="INSERT INTO invoices (companyname, email, address, price, file)
VALUES
('$_POST[companyname]','$_POST[email]','$_POST[address]','$_POST[price]','$_POST[file]')";

if (!mysqli_query($con,$sql))
  
  die('Error: ' . mysqli_error($con));
  
echo "Project created";

mysqli_close($con);
?>

如果有人能帮助我,将不胜感激

【问题讨论】:

【参考方案1】:

使用 input type="file" 并在 php 中使用 $_FILES 而不是 $_POST, 不要忘记将 enctype="multipart/form-data" 添加到表单中。创建一个文件夹并在 $filename 中添加目标路径和文件名(此处为 FOLDER)

0) 回声“文件错误”; 死(); $filename = "文件夹/".$_FILES["file"]["name"]; // 将文件移动到文件夹 if (!move_uploaded_file($_FILES["file"]["tmp_name"], $filename)) // 改变目标路径 echo "抱歉,上传文件时出错。"; 死(); $sql="INSERT INTO invoices (companyname, email, address, price, file) 价值观 ('$_POST[companyname]','$_POST[email]','$_POST[address]','$_POST[price]','$filename')"; if (!mysqli_query($con,$sql)) die('错误:' .mysqli_error($con)); echo "项目创建"; mysqli_close($con); ?>

【讨论】:

非常感谢,现在可以上传到服务器了。但是我收到了这个错误。错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“./f10/uploads/test.pdf)”附近使用正确的语法 在 $filename 中添加 ',答案已更新... :) 将查询中的 $filename 更改为 '$filename' 哇,非常感谢,非常感谢您的快速响应【参考方案2】:

你应该先在你的服务器上传文件,然后像这个简单的上传代码一样将地址插入数据库:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
    $image= $_POST['image'];    
    $sid = "usr1";
    if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) 
        $filename = basename($_FILES['uploaded_file']['name']);
        $ext = substr($filename, strrpos($filename, '.') + 1);
        if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") || ($ext == "png") && ($_FILES["uploaded_file"]["type"] == "image/png") || ($ext == "gif") && ($_FILES["uploaded_file"]["type"] == "image/gif") && ($_FILES["uploaded_file"]["size"] < 550000)) 
            $midname = "test" ;
            $filename2 = $sid.'_'.$midname.'.jpeg';
            $newname = dirname(__FILE__).'/avatars/'.$filename2;
            $filead = 'avatars/'.$filename2;
            if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) 
                if($image !== "")
                    unlink($image);
                
                    echo "<img src=\"$filead\" title=\"pic\"  /><br/>";
                echo "UPLOADED";
             
         else 
            echo  "BIG FILE.";
        
       

注意:当你想在主机上上传文件时,总是检查文件头在检查扩展名之后。

【讨论】:

以上是关于PHP表单文件上传到Mysql和服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP、jQuery 和 AJAX 上传多个文件

无法将 pdf 文件上传到 mysql 数据库并使用 PHP 检索它?

PHP高级教程-文件上传

PHP 表单通过电子邮件发送的结果。我需要捕获表单中的上传文件

php上传文件为啥一定要用post

结合jQuery文件上传和表单到mysql