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