Mp4视频在mysql数据库为“blob"


mp4 video in mysql database as "blob"

我看过几个论坛,建议不要在数据库中存储视频。不幸的是,我不得不这样做,因为我正在做一个学校项目的限制。我想知道如果有人会让我知道我在哪里出错时,试图将我的视频存储到数据库。我们正在使用一个嵌入式过程(其他人在我的组写了他们,可能是问题),但从表单检索视频后,它返回作为一个数组,其中包含名称,类型,错误,位置等(与视频相关的东西)。在从表单中检索数组之后,我天真地试图通过查询通过函数调用将整个内容插入到数据中,如下所示。这给出了一个立即的错误"未知列'数组'在'字段列表'"。我得到的数组是$video的类型后,我们把它从表单,但我不知道从那里去。

if(empty($_FILES['sonogram'])) {
    echo 'The file exceeded maximum';
}
else {
    $video = $_FILES['sonogram'];
}
//call our embedded procedure to add the video to the database
mysql_query("call SaveImage($studyId, $video, 'nothing new')");

有没有人能让我知道,如果我正在做一个简单的错误(语法等),或者如果有一些缺失由于blob/mp4的工作。

谢谢

$_FILES基本上只是一个信息数组。它不包含您的实际文件。您需要打开文件,读取内容,然后将其保存到数据库。

从未测试过以下内容,尤其是视频:

// Read the video file content from the temp file.
// Usually on uploads you move the file.
$video = file_get_contents($_FILES['sonogram']['tmp_name']);

这里有两个完全不同且几乎不相关的任务:上传文件并将其传递给过程。

  • 第一个在PHP手册的处理文件上传章节中有解释。

  • 第二个取决于SaveImage所期望的:文件流或临时文件名。由于您正在使用传统的mysql扩展,据我所知,它不提供对二进制列的blob的特定支持,因此您必须使用mysql_real_escape_string()将视频插入到SQL查询中。如果您的过程需要实际的视频内容,则查询可能会超过最大包大小并导致崩溃。