use*_*877 14 php mysql binary-data
这个网站过去帮了我很多,但现在我迷路了.在此先感谢您的指导.
我有一个包含二进制值的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`))
Run Code Online (Sandbox Code Playgroud)
这是nid的示例值:( ÞFÈ>ZPÎ×jRZ{æ× 并非所有显示,但所有16都在那里)
现在我想创建一个SQL查询来查找该值为true的行的id.
SELECT id FROM test WHERE nid = 'ÞFÈ>ZPÎ×jRZ{æ×';
Run Code Online (Sandbox Code Playgroud)
......不起作用.任何的想法?
解决方案 以HEX格式获取nid就可以了.它导致DE46C83E5A50CED70E6A525A7BE6D709,当我在这样的查询中使用它时......
SELECT id FROM test WHERE HEX(nid) = 'DE46C83E5A50CED70E6A525A7BE6D709';
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果.
sha*_*yyx 11
注意:这解决了二进制数据,但没有加密数据.有关搜索加密数据,请参阅此答案.
尝试添加X,x或0x在用于搜索二进制数据的前面:
SELECT id FROM test WHERE pid = '0xÞFÈ>ZPÎ×jRZ{æ×';
Run Code Online (Sandbox Code Playgroud)
编辑:尝试这个:
SELECT id FROM test WHERE BINARY pid = 'ÞFÈ>ZPÎ×jRZ{æ×';
Run Code Online (Sandbox Code Playgroud)
要么
SELECT id FROM test WHERE HEX(pid) = BIN2HEX('0xÞFÈ>ZPÎ×jRZ{æ×');
Run Code Online (Sandbox Code Playgroud)
假设在这里:如何选择二进制字段?(PHP,MySQL的)
如果没有从上面的工作原理:尝试获取pid的HEX格式,如
SELECT id, HEX(pid) pid, test FROM test
Run Code Online (Sandbox Code Playgroud)
然后在搜索时只尝试:
SELECT id, test FROM test WHERE HEX(pid) = '{$my_pid}'
Run Code Online (Sandbox Code Playgroud)
但是我不确定你是如何获得pidPHP 的数据,甚至是否将二进制数据传递给你的select - where查询...只是猜测由于php标签...
| 归档时间: |
|
| 查看次数: |
20755 次 |
| 最近记录: |