php 文件中未捕获的异常"PDOException"



所以我们想从目录将pdf文件插入到数据库中。

这是错误:

PHP 致命错误: 未捕获的 PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]"@P1"附近的语法不正确。 in D:\dir\dir\dbData.php:662

法典:

dbData.php:

public function insFile($filename)
{
$db = getDB();
$query = $db->prepare("
INSERT INTO images(id, imageFile)
SELECT NEWID(), BulkColumn
FROM OPENROWSET(BULK :filename, SINGLE_BLOB) as f;
");
$query->bindParam(':filename', $filename, PDO::PARAM_STR);   
$data = $query->fetchAll(PDO::FETCH_OBJ); 
$query->execute();   // THIS IS THE 662ND LINE
$db = null;
return null;
}

首页.php

<?php
require_once(_DIR_.'/'.'oconfig.php');
foreach (glob("D:/dir/dir/pdf/*.pdf") as $filename) {
$filename = "D:/dir/dir/pdf/" . basename($filename);     
$userData=$dbData->insFile($filename);
echo $userData;
}
?>

如前所述,SQL Server 的 OPENROWSET 中的BULK文件名字符串文本无法参数化。相反,请考虑直接将文件名连接到迭代循环运行的调用中。

public function insFile($filename)
{
$db = getDB();
$query = $db->query("
INSERT INTO images(id, imageFile)
SELECT NEWID(), BulkColumn
FROM OPENROWSET(BULK '$filename', SINGLE_BLOB) as f;
");
$db = null;
return null;
}

相关内容

最新更新