我有一个搜索脚本,现在我想让它搜索多个列。 就像现在我有" plaats"作为数据库列。但我也想在搜索选项中找到跟踪,分层,邮政编码,plaats。
我添加了AND / OR规则,但它显示了数据库中的所有行。
有人可以帮我解决这个问题吗:)
<?php
if (!empty($_REQUEST['term'])) {
$term = mysql_real_escape_string($_REQUEST['term']);
$sql = "SELECT * FROM tt WHERE plaats LIKE '%".$term."%'";
$r_query = mysql_query($sql);
while ($row = mysql_fetch_array($r_query)){
echo "<tr class=\"border_bottom\">";
echo "<td><a href=\"https://jouw.postnl.nl/#!/track-en-trace/".$row['track']."/".$row['land']."/".$row['postcode']."\">Bekijk Status</a>";
echo "<td>".$row['track']."</td>";
echo "<td>".$row['straat']."</td>";
echo "<td>".$row['postcode']."</td>";
echo "<td>".$row['plaats']."</td>";
echo "<td>".$row['land']."</td>";
echo "<td>".$row['datum']."</td>";
echo "<td>".$row['klantnummer']."</td>";
echo "<td><a href=\"edit.php?id=$$row[id]\">Wijzigen</a></td>";
}
}
?>
答案 0 :(得分:1)
您的查询应如下所示:
$sql = "SELECT * FROM tt WHERE
plaats LIKE '%".$term."%'
OR straat LIKE '%".$term."%'
OR track LIKE '%".$term."%'
OR land LIKE '%".$term."%'
OR datum LIKE '%".$term."%'";
这意味着:您需要将每个列与您要查找的术语进行比较。
请记住,您不应该使用mysql_ *函数。它们已被弃用,将来会被删除。
另外,你想要考虑一个更为复杂的策略:我强烈怀疑是否真的存在这样的情况,即在&#34; street&#34;或者在&#34;数据&#34;。但这只是一个侧面说明。
答案 1 :(得分:0)
从
改变$term = mysql_real_escape_string($_REQUEST['term']);
$sql = "SELECT * FROM tt WHERE plaats LIKE '%".$term."%'";
要
$term = mysql_real_escape_string($_REQUEST['term']);
$searchTerms = "plaats LIKE '%".$term."%'
OR track LIKE '%".$term."%'
OR straat LIKE '%".$term."%'
OR postcode LIKE '%".$term."%'
";
$sql = "SELECT * FROM tt WHERE $searchTerms";
警告:自PHP 5.5.0起,不推荐使用MYSQL扩展,自PHP 7.0.0起,该扩展已被删除。相反,应该使用MySQLi或PDO_MySQL扩展。
答案 2 :(得分:0)
你可以通过添加此代码来实现。
$qry = "select * from tt where
plaats LIKE '%".$term."%' or track, LIKE '%".$term."%' or straat LIKE '%".$term."%' or postcode LIKE '%".$term."%' or plaats LIKE '%".$term."%'";
echo $qry;