0

本着提高安全性的精神,我实现了一个执行准备好的语句的函数。

但是当我尝试获取 base64 编码的 blob 内容(大约 30-50KB)时遇到了问题。

如果我在不使用准备好的语句的情况下运行查询,它会运行得很快。

使用准备好的语句,它会在调用时停止:mysqli_stmt_fetch($statement) 并且需要将近一分钟或更长时间才能运行,最终返回结果。

一旦我摆脱mysqli_stmt_fetch($statement)呼叫或从我的选择查询中排除 blob 字段,事情就会像往常一样快速运行。

我希望有人知道这里发生了什么。到目前为止,我已经疏通了互联网寻找答案,但运气不佳。

4

1 回答 1

1

我会将二进制 blob 保存在 MySQL 以外的其他地方,在 MySQL 中保留一个简单的标识符,以便我知道从哪里获取它。MySQL 从来都不是存储大块二进制数据的首选方式。
至少它会解决您的问题,您可能应该尝试放弃 base64 开销(这也会增加 33% 的大小)。

我会尝试的另一个解决方案是查看是否有更新版本的驱动程序或服务器。或者尝试其他驱动程序,例如PDO

第三种解决方案是尝试将字段类型从 BLOB 更改为 TEXT,base64 在正常的 ascii 范围内。

于 2013-03-22T21:55:25.240 回答