我的问题:我无法使用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/

10-14 15:34
查看更多