在DB中搜索多个列

时间:2015-08-17 07:25:07

标签: php search

我有一个搜索脚本,现在我想让它搜索多个列。 就像现在我有" 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>";
    }
}
?>

3 个答案:

答案 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;