PHP多表单字段搜索

时间:2013-03-13 14:48:09

标签: php mysql

通过做一些阅读和阅读在网上搜寻我设法建立一个HTML表格&我将在MySQL数据库上进行文本搜索的PHP脚本。我可以通过在表单中​​输入1个字段的文本成功搜索它。我想知道如何扩展这个,以便我可以给用户2个字段&他们可以在其中的一个或两个中输入数据以优化其结果,即搜索名为“John”的所有条目,或者名为“John”和“John”的所有条目。在'都柏林'市。我已经尝试过对MySQL查询的许多操作,但还没有成功地让它工作得令人满意。如何编写以下代码才能使其正常工作?

我的HTML表单代码是:

<form method="POST" action="search.php" name="formid">
   Name: <input type="text" name="query" /><br>
   City: <input type="text" name="city" /><br>
   <input type="submit" name="submit" value="Start Search" />
</form>

&安培; PHP代码是:

<?php

include 'db_details.php';

$connection = mysql_connect($server, $user, $password);

mysql_select_db($db, $connection);

$query=mysql_real_escape_string($_POST['query']);

$query = htmlspecialchars($query);

$result=mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%') ", $connection) or die ("Cannot run query");

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

while ($row = mysql_fetch_assoc($result))
{
    foreach ($row as $attribute)
    echo "{$attribute} ";
    echo "<br>";
}

mysql_close();
?>

1 个答案:

答案 0 :(得分:0)

只需将city字段的值放在变量$city

$city = mysql_real_escape_string($_POST['city']);

$city = htmlspecialchars($city);

然后像这样查询:

$result = mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%' OR city LIKE '%".$city."%') ", $connection) or die ("Cannot run query");

它会查询来自colour的所有结果,其中名字如$query或城市就像$city

注意:此方法没有优先级,匹配两个条件的颜色行的优先级不会高于只有1个匹配的行

对于更高级的搜索方法,我建议您查看Full-text search以及