我编写了一个基于轻量级套接字的 HandlerSocket 查询系统,它运行良好....缺少这个小问题....
我在数据库中有一个表,其unique
索引包含 5 个关键部分:
function, type, parameter, Module_ID, Site_ID
都是字符串,前 4 列是必需的,最后 (Site_ID) 不是 AND 它可能是NULL
。简要说明是所有站点共享具有 的记录Site_ID = NULL
,但是每个站点都可以用它自己的一条记录覆盖默认记录,并提供它们的特定记录Site_ID
。
我的 Sockets 查询准备请求,如下所示:
$request = array(
'indexid' => $key,
'op' => $query->get_type(),
'vlen' => count($query->get_keys()),
'keys' => implode("\t",$query->get_key_values()),
'limit' => $query->get_limit(),
'offset' => $query->get_offset());
// Join as TAB separated values
$request = implode("\t",$request)."\n";
因此,当提供所有 5 列部分和键值时,它可以工作,当提供前 4 列和前 4 个键值时,它可以工作,但是当使用所有 5 列和它们对应的第 5 列的键值NULL
时,它什么也不返回我知道事实上有些记录与前 4 个匹配并且有一个NULL
Site_ID。
我必须能够使用第三种情况,因为我需要确保它与任何定义了 Site_ID 的情况都不匹配。
我假设问题在于\t
连接的键值,但我不确定这里使用的正确值是匹配 NULL 列值......因为它不是NULL
.
如果有人可以阐明格式化此请求的正确方法,以便它可以匹配第NULL
5 列,我将不胜感激!