【发布时间】:2011-04-14 10:16:24
【问题描述】:
我像这样用 php 存储 blob 数据
$this->_db->exec"CREATE TABLE media (url TEXT, content BLOB)");
$fp = fopen($encoded['path'], 'rb');
$sql = "INSERT INTO media (url, content) VALUES (?, ?)";
$stmt = $this->_db->prepare($sql);
$stmt->bindValue(1, $encoded['url'], PDO::PARAM_STR);
$stmt->bindValue(2, $fp, PDO::PARAM_LOB);
$stmt->execute();
fclose($fp);
在我的 c++ 程序(使用 bada 框架)中,我从 blob 列中读取数据。问题是,当我在本地主机(版本 5.3.2-1ubuntu4.2)上使用 php 时,我的 c++ 应用程序可以正确地将 blob 列识别为 blob 类型。但是当我使用远程主机(php 版本 5.2.12)创建 sqlite 文件时,我的 c++ 应用程序将 blob 列识别为 TEXT TYPE,并且我的二进制数据已损坏。
有人知道原因和解决方法吗?
谢谢
【问题讨论】:
-
鉴于您混合使用了 PHP 5.2 和 5.3,这很可能是由于 sqlite 库的不同。可能是在推出 Ubuntu 安装时修复的错误。
-
我也这么认为。但问题是,我无法在共享主机上升级 sqlite。希望老版本有解决办法。
标签: php sqlite binary blob bada