我希望我的搜索仅显示具有匹配字段值的结果。这是怎么做到的?

时间:2011-10-25 22:25:08

标签: php mysql search

我希望我的搜索仅显示与同一行中的值匹配的结果。

我有两个搜索字段:

'搜索'和'搜索字词'

我的数据库中的字段名称是

名 姓 电子邮件

例如:

如果我搜索

'搜索'中的'mike'和'搜索词'中的'smith'我想要显示的唯一结果是匹配'mike smith'的结果没有显示像'mike harris'的结果

这是如何实现的?

谢谢!

詹姆斯

 <?php

$conn = mysql_connect("", "", "");



if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

$search = addcslashes($search,'%_');
$searchterm = addcslashes($searchterm,'%_');

  $search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";



if (!mysql_select_db("")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$search = $_POST['search'];
$searchterm = $_POST['searchterm'];
$sql = "SELECT name,lastname,email
FROM   test_mysql
WHERE  name LIKE '%". mysql_real_escape_string($search) ."%'";
$result = mysql_query($sql);


if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if(empty($_GET['search'])){ // or whatever your field's name is
  echo 'no results';
}else{
  performSearch(); // do what you're doing right now
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}


while ($row = mysql_fetch_assoc($result)) {
echo '<br><br><div class="data1">';
echo htmlentities($row["name"]);
echo '</div><br><div class="data2">';
echo htmlentities($row["lastname"]);
echo '</div><br><div class="data3">';
echo htmlentities($row["email"]);
echo '</div>';
}

mysql_free_result($result);

?>

3 个答案:

答案 0 :(得分:2)

变化:

WHERE  name LIKE '%". mysql_real_escape_string($search) ."%'";

要:

WHERE  name LIKE '%". mysql_real_escape_string($search) ."%' AND lastname LIKE '%". mysql_real_escape_string($search) ."%'";

答案 1 :(得分:1)

$sql = "SELECT name,lastname,email
FROM   test_mysql
WHERE  name LIKE '%". mysql_real_escape_string($search) ."%'
AND name LIKE '%". mysql_real_escape_string($searchterm) ."%'";

此外,当我查看您的查询时,您可能还想考虑与姓氏匹配。您的示例建议您可能正在查找名字和姓氏,但查询仅比较名称。

我经常在我的可搜索表格中创建一个名为“搜索”的字段,然后将它们设置为全文索引,这样我就可以使用mysql MATCH AGAINST获得更强大的搜索选项。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

在我了解匹配之前,我的php开发还有一段时间。当然早期知道会有所帮助。希望它有所帮助。

答案 2 :(得分:1)

变化:

$search = addcslashes($search,'%_');
$searchterm = addcslashes($searchterm,'%_');

$search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";

要:

$search = "%" . addcslashes($_POST["search"],'%_'). "%";
$searchterm = "%" . addcslashes($_POST["searchterm"],'%_'). "%";