无法用php选择二进制字段

时间:2012-10-29 20:52:05

标签: php mysql binary bittorrent

我的问题:我无法用mysql选择字段“binary”

structure db

这是查询(注意“不相等”):

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

1 个答案:

答案 0 :(得分:1)

您似乎传递了一个40字节的十六进制数字ASCII表示字符串,其中表定义为包含20个字节的二进制数。

尝试使用十六进制文字符号表示二进制字符串:

SELECT *
FROM `pt_peers`
WHERE `info_hash` = x'7f398565868f7f08f71d236b88e4e433d2311de8'

有关详细信息,请参阅this