一尘不染

带有二进制数据的SQL查询(PHP和MySQL)

mysql

过去,这个网站对我有很大帮助,但现在我迷路了。在此先感谢您的指导。

我有一个包含Binary值的MySQL表,如下例所示。我不能改变桌子。

CREATE TABLE `test` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `nid` binary(16) NOT NULL,
   `test` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`))

这是nid的示例值:(ÞFÈ>ZPÎ×jRZ{æ× 不全部显示,但是所有16个都在那里)

现在,我想创建一个SQL查询来查找该值为true的行的ID。

SELECT id FROM test WHERE nid = 'ÞFÈ>ZPÎ×jRZ{æ×';

…不起作用。任何的想法?

解决方案: 以HEX格式获取nid可以 解决问题
。结果是DE46C83E5A50CED70E6A525A7BE6D709,而当我在这样的查询中使用它时…

SELECT id FROM test WHERE HEX(nid) = 'DE46C83E5A50CED70E6A525A7BE6D709';

我得到正确的结果。


阅读 702

收藏
2020-05-17

共1个答案

一尘不染

注意 :此地址为二进制数据,但不 加密
数据。请参阅此答案以搜索加密数据。

尝试添加Xx0x在用于搜索的二进制数据前面:

SELECT id FROM test WHERE pid = '0xÞFÈ>ZPÎ×jRZ{æ×';

编辑: 也试试这个:

SELECT id FROM test WHERE BINARY pid = 'ÞFÈ>ZPÎ×jRZ{æ×';

要么

SELECT id FROM test WHERE HEX(pid) = BIN2HEX('0xÞFÈ>ZPÎ×jRZ{æ×');

如此处所述:如何使用二进制字段进行选择?(php,mysql)

如果没有从上面的工作原理: 尝试获取pidHEX格式,如

SELECT id, HEX(pid) pid, test FROM test

然后在搜索时仅尝试:

SELECT id, test FROM test WHERE HEX(pid) = '{$my_pid}'

但是我不确定如何将pid数据获取到PHP,甚至不确定是否将二进制数据传递到select - where查询中php

2020-05-17