限制post sql结果

时间:2013-02-05 16:53:30

标签: php mysql search-engine

我从头开始构建搜索引擎。

  • 它扫描多个数据库中的许多不同表。
  • 仅搜索指定的列。
  • 搜索字词是explode()&#39}多个字词搜索
  • 的情况
  • 它通过表格以foreach进行迭代。

我在使用LIMIT构建代码库时遇到了问题。我希望它只显示DISTINCT

例如,如果我搜索Joe Schmoe,我的代码将搜索first = joe,然后搜索last = schmoe,它将显示每次搜索的结果。但我希望它只显示两次搜索的结果。

<?php

echo "<h1>Search Results</h1>";

echo "<table style='width: 100%;'>";

$a = $_GET["q"];

$b = explode(" ", $a);

include 'db_connect3.php';

mysql_select_db("db440035579", $con);

foreach($b as $c){
$sql="SELECT * FROM users WHERE first LIKE '%$c%' || last LIKE '%$c%'";

$result = mysql_query($sql);

while($row = mysql_fetch_array($result))
  {
  echo "<a href='applications.php?act=search&uid=$row[7]'>$row[5], $row[4]</a>";
  }
}


mysql_close($con);
?>

1 个答案:

答案 0 :(得分:0)

首先http://bobby-tables.com/

其次,插入PDO只需几行代码。

第三,全文搜索更好。

最后:

使用数组微操作。我假设$row[0]user.id。这样,每ID

只能获得一个项目
$cache = array();    
foreach($b as $c){
    $sql="SELECT * FROM users WHERE first LIKE '%$c%' || last LIKE '%$c%'";

    $result = mysql_query($sql);

    while($row = mysql_fetch_array($result)){
        $cache[$row[0]] = $row;
    }
}
foreach($cache as $row){
    echo "<a href='applications.php?act=search&uid=$row[7]'>$row[5], $row[4]</a>";
}