PHP动态上传到blob

PHP动态上传到blob,php,mysql,input,upload,blob,Php,Mysql,Input,Upload,Blob,我有一个简单的输入表单,其中包含一个输入type=“file”和name=“pdf\u statement” 我想能够上传的内容,并插入到数据库中的飞行。由于这只是一个测试文件,我不担心安全性(一旦功能到位,我将添加) 我已经读过了,但无法让它发挥作用。I get errors fopen()希望参数1是字符串,数组给定,*stream\u get\u contents()希望参数1是资源,布尔值给定* 如果这是显而易见的,我很抱歉,但对于正在学习的人来说,我无法找出我做错了什么 <?ph

我有一个简单的输入表单,其中包含一个输入type=“file”和name=“pdf\u statement”

我想能够上传的内容,并插入到数据库中的飞行。由于这只是一个测试文件,我不担心安全性(一旦功能到位,我将添加)

我已经读过了,但无法让它发挥作用。I get errors fopen()希望参数1是字符串,数组给定,*stream\u get\u contents()希望参数1是资源,布尔值给定*

如果这是显而易见的,我很抱歉,但对于正在学习的人来说,我无法找出我做错了什么

<?php

include('session.php');

$provider      =$_POST['provider_id'];
$trd_period    =$_POST['trading_period_month'];
$pdf_statement =stream_get_contents(fopen($_FILES['pdf_statement'], 'r'));

$sql_qry="update rd_provider_statement
          set (pdf_statment='".$pdf_statement."', creation_user_id='SCO')
          where  provider='".$provider."' and trading_period_month='".$trd_period."'";
$sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr);    

?>

您需要以二进制模式打开文件:

fopen($_FILES['pdf_statement']['tmp_name'], 'rb')
或者您可以使用
file\u get\u contents()

$pdf_statement = file_get_contents($_FILES['pdf_statement']['tmp_name']);

您还需要清理输入。Use
mysql\u real\u escape\u string()

$\u FILES['pdf\u statement']
是一个数组,而不是包含可以传递到
fopen
的文件路径的字符串。您还需要以二进制模式打开文件

$pdf_statement = stream_get_contents(fopen($_FILES['pdf_statement']['tmp_name'], 'rb'));

值得指出的是,使用数据库存储上传的文件不是一个好主意。文件系统是获取这些信息的更好的地方。

在大多数环境中,要访问$\u文件['pdf\u statement']['tmp\u name']数据库空间比普通磁盘空间更昂贵。为什么不将PDF保存到文件系统并在数据库中存储指针呢?谢谢大家,如果我回显$pdf_语句,我会收到大量字符,因此我知道它被正确读取,但表中没有任何列被更新?您是否尝试检查错误变量以查看查询中是否有任何错误?您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第2行“i??????v??c?lñ§?1???????=?cÅ710; X-???v???c-??l????{v????7?μ?Jy?m*a”附近使用的正确语法-这与二进制字符串的处理方式有关。我使用set pdfÅu语句=“$pdfÅ”'您还需要清理输入。使用
mysql\u real\u escape\u string()