【发布时间】:2018-02-16 17:35:55
【问题描述】:
我正在尝试以二进制形式保存一个字符串以节省我的 MySQL 数据库中的空间。但是,我无法正确检索二进制数据,我做错了什么?
我有一个类似的数据库:
CREATE TABLE `Test` (
ID INT NOT,
Value BLOB
);
我使用如下语句插入数据:
INSERT INTO `Test` (ID, Value) VALUES(1, b'10000001');
但是,当我使用下面的查询从插入的行中选择值时,我无法检索二进制字符串:
SELECT * FROM `Test`; //NOT WORKING. Returns Value=0
SELECT ID, BIN(Value) FROM `Test`; //NOT WORKING. Returns Value=0
我应该使用什么?如上所示,我已经尝试在查询中使用BIN(Value),但没有任何成功。提前致谢。
【问题讨论】:
-
VALUES(1, b'10000001'如果这是您的实际查询,则它失败了。为什么在引用值的内部和外部都有b? -
@Fred-ii-,告诉数据库它是一个二进制值?我在互联网上读到,不确定或是否正确,但我无法找到任何解决方案..?
-
你可能是对的。您标记为 php,是否有相关代码?当你在 phpmyadmin(或类似的)中运行它时,它会抛出什么错误?我不清楚
ID INT NOT,和NOT,我以前从未见过。 -
@TVAvanHesteren 不在 mysql 中。要么使用准备好的语句并绑定在不受干扰的二进制数据中,要么对数据进行十六进制编码,如
0x81。 -
@Sammitch,你能给我提供任何代码吗?