PHP多表单字段搜索

PHP多表单字段搜索,php,mysql,Php,Mysql,通过阅读和浏览网页,我成功地构建了一个HTML表单和PHP脚本,可以在MySQL数据库上进行文本搜索。我可以让它搜索成功从文本输入到1个字段的形式。我想知道如何扩展它,以便我可以给用户两个字段&他们可以在其中一个或两个字段中输入数据,以优化结果,即搜索“都柏林”中所有名为“John”的条目或所有名为“John”的条目。我尝试了很多MySQL查询的操作,但都没有成功地让它正常工作。我如何编写下面的代码使其工作 我的HTML表单代码是: <form method="POST" action="

通过阅读和浏览网页,我成功地构建了一个HTML表单和PHP脚本,可以在MySQL数据库上进行文本搜索。我可以让它搜索成功从文本输入到1个字段的形式。我想知道如何扩展它,以便我可以给用户两个字段&他们可以在其中一个或两个字段中输入数据,以优化结果,即搜索“都柏林”中所有名为“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();
?>

只需将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");
它将查询来自
color
的所有结果,其中名字类似于
$query
,或者城市类似于
$city

注意:在这种方法中没有优先级,匹配两个条件的颜色行的优先级不会高于仅匹配1个条件的行


对于更高级的搜索方法,我建议您也研究一下表的外观(模式)?到目前为止,您尝试了什么?添加更多字段,检查它们是否已填充,构建一个
WHERE
字符串以根据填充的字段添加到方形中