使用Blob将图像上载到MySQL数据库

时间:2016-02-15 19:31:35

标签: php mysql mysqli blob

首先澄清,我知道有更好的方法可以做到这一点,但我决心尝试。

基本上,我正在尝试从表单帖子中获取图像,然后将其发送到数据库 MEDIUMBLOB 字段。

不幸的是,使用我当前的方法,数据库列中的最终结果始终为零字节。 phpMyAdmin Screenshot enter image description here

以下是表单上图片上传的代码:

input type="file" name="_imagePost">

这是页面上的PHP代码,我正在使用MySQLi:

    if(isset($_POST['_imagePost']))
    {
        $_useImagePost = 1;
        $_imagePost = file_get_contents($_FILES['_imagePost']);

        // Open DB Connection
        $_conn = databaseConnect();

        $_stmt = $_conn->prepare("INSERT INTO Question (Question_Type, Question_Text, Question_Answer, Question_UseImage, Question_Image) VALUES (?, ?, ?, ?, ?)");
        $_stmt->bind_param("sssib", $_typePost, $_textPost, $_answerPost, $_useImagePost, $_null);
        $_stmt->send_long_data(4,$_imagePost);
        $_stmt->execute();

        // Close DB Connection
        $_conn->close();
    }

我不确定的是,当输入类型为文件时,“isset($ _ POST ['_ imagePost'])”是否有效。

然而,我确信当前的设置根本不起作用。

1 个答案:

答案 0 :(得分:2)

你写道:

{CTRL}-H

正确的语法是:

$_imagePost = file_get_contents($_FILES['_imagePost']);

$_imagePost = file_get_contents($_FILES['_imagePost']['tmp_name']); 是一个关联数组,后面是键:

  • [name] => 原始文件名;
  • [type] =>已上传文件的mimetype;
  • [tmp_name] =>临时文件路径(存储上载文件的位置);
  • [error] =>误差;
  • [size] =>上传文件的大小。