我有 PHP 代码来做一个简单的 MySQL 数据库搜索,只有两列数据。我怀疑当我可以简单地以不同的方式做时,我可能已经走了很长一段路。
我有一个表格,您可以输入名称或 IP 地址,它会在数据库中搜索其中任何一个,并输出结果。每个名称只能有一个 IP 地址(他们使用的最后一个)(完全唯一的名称将只有 1 个结果,如果部分名称匹配多个帐户,则有多个结果),但一个 IP 地址可以有多个名称(使用多个帐户的人在同一个 IP 上)。我想要做的是拥有它,所以如果您搜索一个名称,它将执行常规的单个结果(如果输入了完整的唯一名称),但然后在它下面,如果只有名称,则对 IP 进行二次搜索在表格中搜索。
“您搜索 NAME 已返回以下结果:{results}。我们还发现了这些使用相同 IP 地址的帐户:{results matching the same IP from the first result of the Name search}”。
这是我到目前为止的代码:
(一些清理,因为我使用的是 GET)
$iplookup = strtolower($_GET['iplookup']);
$iplookup = stripslashes($iplookup);
$iplookup = strip_tags($iplookup);
$iplookup = preg_replace('/[^A-Za-z0-9\._]/','',$iplookup);
$sql = mysql_query("select
* from banlistip where name like '%$iplookup%' OR lastip like '%$iplookup%'
");
if (empty($iplookup)) {
echo '<br><b>You left the search form empty.</b>';
} else {
while ($row = mysql_fetch_array($sql)) {
echo '<br/> Name: '.$row['name'];
echo '<br/> Player IP: '.$row['lastip'];
echo '<br/><br/>';
}
}
然后在这里它会得到那个$row['lastip']
变量,然后搜索那个变量,这相当于首先搜索一个 IP 地址。
这样做的全部目的是消除几个步骤并立即查看所有所需的结果。通常,为了进行 IP 搜索,我必须搜索名称,突出显示 + 复制 ip,返回表单,然后搜索 IP。
具有名为“name”和“lastip”的两列的表分别具有如下数据:
player1 111.111.111.111
player2 222.222.222.222
player3 111.000.111.000
player4 222.000.222.000
altaccount1 111.000.111.000
altaccount2 222.222.222.222
(如果你搜索 Player2,你会得到一个结果,因为它是一个唯一的名字。如果你搜索 Player2 的 IP,你会得到两个结果 [player2 + altaccount2],因为有一个备用帐户使用相同的IP地址。)
(请原谅这篇很长的帖子。我只想提供尽可能多的细节,我试图研究这个,但现在有一个障碍。非常感谢,再一次,很抱歉让你阅读所有这些。 )