我第一次使用BLOB,所以我仍然想弄清楚一些东西。
首先,我需要在我的数据库中添加一个附加列,其中将存储一个zip文件。我在phpMyAdmin中做了这个并设置了一些属性:Name = file, Type = BLOB, Default = NULL
,还有我需要预设的其他内容,例如MIME type/Browser transformation/Attributes
吗?
现在我想使用pdo将zip文件添加(或更好地更新)到现有列中(只有更新部分的代码,pdo连接等已经存在于我的旧代码中并经过测试和工作):< / p>
$id = "id_i_got_from_somewhere_else"; //12345
$file_name= "path_to_my_zip_file"; //projectpath/packets/somename.zip, tested, the file exists
function merge_file($id, $file_name)
{
$merge_query = "UPDATE packets SET file=:file WHERE id=:id";
try
{
$stmt=$pdo->prepare($merge_query);
$stmt->bindParam(':file', $file_name, PDO::PARAM_LOB);
$stmt->bindParam(':id', $id);
$stmt->execute();
return true;
}
catch (PDOException $ex)
{
echo $ex->getMessage();
return false;
}
}
merge_file($id,$file_name);
我可以看到,[BLOB - 53b]
被添加到列中。为了进行测试,我单击BLOB并将其下载为.bin-file
,将扩展名更改为.zip
但无法打开它。 (有点复杂,有没有更好的方法)?
答案 0 :(得分:1)
使用PHP的file_get_contents()
执行此操作:
function merge_file($id, $file_name)
{
$merge_query = "UPDATE packets SET file=:file WHERE id=:id";
try
{
$stmt=$pdo->prepare($merge_query);
$stmt->bindParam(':file', file_get_contents($file_name), PDO::PARAM_LOB);
$stmt->bindParam(':id', $id);
$stmt->execute();
return true;
}
catch (PDOException $ex)
{
echo $ex->getMessage();
return false;
}
}