PHP表单图像文件上传到MySQL数据库不起作用

时间:2017-09-02 22:39:15

标签: php

我尝试将文件上传到我的数据库,但我得到的是HTTP 500内部服务器错误,我已经在网络服务器上授予了与文件上传相关的所有权限。

require_once ("../WebConfig/Connection.php");

if(isset($_POST["submit1"])) {

    $imagedata = mysql_real_escape_string(file_get_contents($_FILES["f1"]["tmp_name"]));
    $filetype =  mysql_real_escape_string($_FILES["f1"]["type"]); 

    insertBlobPicture($imagedata,$filetype);
} else { 
    echo "Failed: URL parameters not set";
}


function insertBlobPicture($filePath, $mime) 
{

    $db = mysqli_connect(HOST,USERNAME,PASSWORD,DATABASE)
            or die("Failed: Could not connect to the MySQL ". mysqli_connect_error());

    $blob = fopen($filePath, 'rb');

    echo "Connected To: ". $db;
    $sql = mssql_query("INSERT INTO PICTURE(DATA,MIME )VALUES ('$blob','$mime')");

    $result = $db->query($sql);

    if($result->num_rows > 0)
    {
        echo  "Succes";
    }else{
        echo "Failed";
    }
}

2 个答案:

答案 0 :(得分:1)

您不能在mysql连接上使用mssql_query()。您的代码至少存在类型不匹配。

顺便说一句:如果您提供环境中的日志信息以及代码,那么帮助您会更容易。

答案 1 :(得分:1)

有两个问题。

(1)$ blob:你想插入MySQL blob字段。查看您的代码,

$blob = fopen($filePath, 'rb');

现在你的$ blob是文件的句柄(资源),而不是文件的真实内容。

(2)$ imagedata:根据您的脚本,$ imagedata是文件的内容,而不是文件的路径。所以当你想使用" $ blob = fopen($ filePath,' rb');"在你的脚本中,500发生了。

这是一个新的insertBlobPicture函数供您参考。

<?php
function insertBlobPicture($blob, $mimie){
    $db = mysqli_connect(HOST,USERNAME,PASSWORD,DATABASE)
        or die("Failed: Could not connect to the MySQL ". mysqli_connect_error());
    $sql = mssql_query("INSERT INTO PICTURE(DATA,MIME )VALUES ('$blob','$mime')");
    $result = $db->query($sql);
    ......
}
?>