Php mysql数据库中的mp4视频;blob";

Php mysql数据库中的mp4视频;blob";,php,mysql,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而遗漏了什么,有人能告诉我吗


谢谢

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

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

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

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

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

// 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
    期望的内容:文件流或临时文件名。由于您使用的是,据我所知,它不提供对二进制列blob的特定支持,因此您必须使用将视频注入到SQL查询中。如果您的过程需要实际的视频内容,则查询可能会超过最大包大小并崩溃


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

  • 第一个在PHP手册的一章中进行了解释

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


我认为这可以获取视频,但它仍然无法插入数据库。保存图像是存储例程吗?难道你不能像
那样插入我的表格(我的id,我的视频,我的标题)的值(“$id”,“$video”,“$title”)?(注意SQL注入)是的,saveImage是一个存储例程(不是我的主意),我尝试按照您的建议通过直接查询插入,但得到一个错误,表明您的SQL语法有错误;根据您的逻辑,检查与您的MySQL服务器版本对应的手册中第1行“”附近使用的正确语法,如果视频没有上传,您仍然调用MySQL_查询,并尝试不插入任何内容作为视频。这项研究申报了吗?您是否尝试在查询中使用引号包装变量?您应该像@lvaro-g-vicario提到的那样,使用mysql\u real\u escape尝试$video-编辑-如果在查询中未使用引号并尝试插入空白变量,这是正常的,它说接近“”。我已经把它缩小到$video是问题,如果我只传递一个空字符串,它确实会添加到数据库中,但与$video不一样。我认为这可以获取视频,但它仍然不会插入数据库。是SaveImage存储例程吗?难道你不能像
那样插入我的表格(我的id,我的视频,我的标题)的值(“$id”,“$video”,“$title”)?(注意SQL注入)是的,saveImage是一个存储例程(不是我的主意),我尝试按照您的建议通过直接查询插入,但得到一个错误,表明您的SQL语法有错误;根据您的逻辑,检查与您的MySQL服务器版本对应的手册中第1行“”附近使用的正确语法,如果视频没有上传,您仍然调用MySQL_查询,并尝试不插入任何内容作为视频。这项研究申报了吗?您是否尝试在查询中使用引号包装变量?您应该像@lvaro-g-vicario提到的那样,使用mysql\u real\u escape尝试$video-编辑-如果您在查询中未使用引号并尝试插入空白变量,则该变量显示为接近“”。这是正常的。我已将其缩小到$video,如果我只传递一个空字符串,它会将其添加到数据库中,但不会与$video一起添加,则问题出在$video上