【问题标题】:php file upload to a databasephp文件上传到数据库
【发布时间】:2016-11-07 02:09:00
【问题描述】:

我正在尝试将文件上传到目录并将其值存储在数据库中。我不知道这段代码有什么问题。提前感谢您的帮助 图片显示回显时的变量。

$con=connect();
    $file_name=$_FILES['file']['name'];
    $file_size=$_FILES['file']['size']/1024;
    $display_name=$_POST['display_name'];

    $upload_dir='../uploads/docs/';
    $file_temp=$_FILES['file']['tmp_name'];
    $file_path=$upload_dir.$file_name;
if(move_uploaded_file($file_temp,$file_path))
        {
            if($con)
            {
            $query=mysqli_query($con,"insert into dcument_upload 
            values(null,'$display_name','$file_path','$file_size')");
            $rr=mysqli_num_rows($query);
            if($rr)
                {
                    echo 'Uploaded';
                    echo $rr;
                }else
                {
                    echo "Upload failed";
                }
            }
            else
            {
                die("Cannot Connect");

            }
        }   
        else
        {
            echo "<br>Upload Failed<br>Try Again!";
        }

【问题讨论】:

  • 这个文件运行时的输出是什么? IE:它会输出您的警告/错误消息之一,还是有任何 PHP 错误?
  • 使用mysqli_affected_rows()通过插入查询检查受影响的行数
  • 你有什么错误???解释什么不工作??
  • 文件正在上传到服务器,但我无法将文件信息插入数据库

标签: php mysql upload


【解决方案1】:

试试这个。您将变量放在单引号下。

<?php
    $con = connect();
    $file_name = $_FILES['file']['name'];
    $file_size = $_FILES['file']['size']/1024;
    $display_name = $_POST['display_name'];

    $upload_dir = '../uploads/docs/';
    $file_temp = $_FILES['file']['tmp_name'];
    $file_path = $upload_dir.$file_name;

    if(move_uploaded_file($file_temp,$file_path)) {
        if($con) {
            $query = mysqli_query($con,"insert into dcument_upload values(null, ".mysqli_real_escape_string($con, $display_name).", ".mysqli_real_escape_string($con, $file_path).", ".mysqli_real_escape_string($con, $file_size)".)");
            $rr = mysqli_num_rows($query);

            if($rr) {
                echo 'Uploaded';
                echo $rr;
            } else {
                echo "Upload failed";
            }
        } else {
            die("Cannot Connect");
        }

    } else {
        echo "<br>Upload Failed<br>Try Again!";
    }

【讨论】:

    【解决方案2】:

    你需要先获取文件的内容:

    $file_data = file_get_contents($file_path);
    $query = mysqli_query($con, "INSERT INTO `dcument_upload ` VALUES (null, '". mysqli_real_escape_string($con, $display_name)."', '".mysqli_real_escape_string($con, $file_data). "', '".mysqli_real_escape_string($con, $file_size)."')");
    

    另外,使用mysqli_real_escape_string 转义特殊字符以帮助防止 SQL 注入。

    【讨论】:

    • 我已将文件信息存储在单独的变量中。我没有直接插入它们
    猜你喜欢
    • 2010-11-21
    • 2017-07-25
    • 2013-06-22
    • 2012-11-08
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多