mysql数据库中的mp4视频为“blob”

时间:2011-11-29 18:51:01

标签: php mysql

我已经阅读了几个建议不要在数据库中存储视频的论坛。不幸的是,基于我正在研究的学校项目的限制,我被迫这样做。我想知道在尝试将我的视频存储到数据库时是否有人会告诉我出错的地方。我们正在使用嵌入式过程(我组中的其他人写了可能是问题的那些)但是从表单中检索视频后,它将作为包含名称,类型,错误,位置等的数组返回(与之相关的事物)该视频)。从表单中检索数组后,我天真地试图通过函数调用通过查询将整个事物插入到数据中,如下所示。这会在“字段列表”中立即显示错误“未知列'数组'”。在我们从表单中提取数据后,我得到的数组是$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而丢失了某些内容,是否有人可以告诉我。

由于

2 个答案:

答案 0 :(得分:4)

$ _ 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']);

答案 1 :(得分:0)

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

  • 第一部分在PHP手册的Handling file uploads章节中进行了解释。

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