我的问题:我无法使用mysql选择字段“二进制”
这是查询(请注意“不等于”):
SELECT *
FROM `pt_peers`
WHERE `info_hash` != '7f398565868f7f08f71d236b88e4e433d2311de8'
这是结构:
CREATE TABLE IF NOT EXISTS `pt_peers` (
`info_hash` binary(20) NOT NULL,
`peer_id` binary(20) NOT NULL,
`compact` binary(6) NOT NULL,
`ip` char(15) NOT NULL,
`port` smallint(5) unsigned NOT NULL,
`state` tinyint(1) unsigned NOT NULL DEFAULT '0',
`updated` int(10) unsigned NOT NULL,
PRIMARY KEY (`info_hash`,`peer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
当我直接选择哈希时,答案为空。 :/
脚本为:PeerTracker
最佳答案
您似乎正在传递一个40字节的十六进制数字ASCII表示形式的字符串,其中该表定义为容纳20字节的二进制数。
使用二进制字符串的十六进制文字表示法尝试一下:
SELECT *
FROM `pt_peers`
WHERE `info_hash` = x'7f398565868f7f08f71d236b88e4e433d2311de8'
有关更多信息,请参见this。
关于php - 无法使用PHP选择二进制字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13129470/