Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用oracle和php将大文件上载到BLOB_Php_Oracle_Pdo_Blob - Fatal编程技术网

使用oracle和php将大文件上载到BLOB

使用oracle和php将大文件上载到BLOB,php,oracle,pdo,blob,Php,Oracle,Pdo,Blob,因此,我尝试上载一个PDF文件并将其存储在Oracle表中的BLOB字段中,但下面这样的简单查询失败,并出现以下错误: ORA-01704:字符串文字太长 有什么办法解决吗 使用PDO 您可以尝试此模板: $db= new PDO("oci:dbname=dbnamehere","dbusername","dbpassword"); $stmt = $db->prepare("INSERT INTO tablename (pid, pdf) VALUE(NULL, :pdf);"); $

因此,我尝试上载一个PDF文件并将其存储在Oracle表中的
BLOB
字段中,但下面这样的简单查询失败,并出现以下错误:

ORA-01704:字符串文字太长

有什么办法解决吗

使用PDO

您可以尝试此模板:

$db= new PDO("oci:dbname=dbnamehere","dbusername","dbpassword");
$stmt = $db->prepare("INSERT INTO tablename (pid, pdf) VALUE(NULL, :pdf);");

$fp = fopen("files/a.pdf", 'rb');

$stmt->bindParam(":pdf", $fp, PDO::PARAM_LOB);
$stmt->execute();

此模板将带有blob值的记录插入数据库。

发布更多代码。我们只能猜测您目前发布的内容。ORA-01704表示您将值直接连接到查询中。它不仅不能工作,因为这些值不能超过4000个字符,还引入了SQL注入形式的漏洞。将该值绑定到一个准备好的statement中。
$db= new PDO("oci:dbname=dbnamehere","dbusername","dbpassword");
$stmt = $db->prepare("INSERT INTO tablename (pid, pdf) VALUE(NULL, :pdf);");

$fp = fopen("files/a.pdf", 'rb');

$stmt->bindParam(":pdf", $fp, PDO::PARAM_LOB);
$stmt->execute();