通过做一些阅读和阅读在网上搜寻我设法建立一个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();
?>
答案 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以及