gpt4 book ai didi

php - 无法从SQLite读取Blob数据

转载 作者:行者123 更新时间:2023-12-04 14:48:19 24 4
gpt4 key购买 nike

我用这样的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,并且二进制数据已损坏。

有谁知道为什么,还有其他解决方法?

谢谢

最佳答案

确保您正在读取和编写相同的SQLite版本,而不是:
服务器= SQLite2 <-> C ++ = SQLite2或服务器= SQLite3 <-> C ++ = SQLite3,因为这将失败。

如果这是问题所在(最有可能是由于SQLite中的更改,导致两个版本不兼容,反之亦然),您有两个选择:


您可以更新服务器(询问提供商),也可以
您可以使用适用的C ++源代码来使您的软件读取服务器可以处理的内容。为此,您可以在sqlite.org上获取SQLite2的源代码(以及在那里存档的所有其他内部版本)。更确切地说,您可以在http://www.sqlite.org/cgi/src/info/47fee16ba9找到最新版本的SQLite2源代码的最新下载,以便将支持编译到您的c ++程序中。


希望这能使您的船如鱼得水。 ;)

PS:如果这不是问题,并且您正在读取/写入相同的SQLite版本,则可以尝试对要存储的二进制数据进行十六进制编码,然后将其保存到TEXT而不是BLOB。这是一种解决方法,但是可以。

关于php - 无法从SQLite读取Blob数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com