高级搜索表单PHP
我制作了一个非常基本的搜索表单,从数据库中获取用户的姓名。它有两个问题,每当我在空的搜索框中按enter键时,它会显示整个数据库,而不是显示错误消息,或者像google搜索框一样什么也不做。其次,我希望搜索结果首先显示在下拉列表中,然后是一个按钮,以便用户需要更多搜索结果时使用 请帮助进行这些更改。任何帮助都将不胜感激高级搜索表单PHP,php,Php,我制作了一个非常基本的搜索表单,从数据库中获取用户的姓名。它有两个问题,每当我在空的搜索框中按enter键时,它会显示整个数据库,而不是显示错误消息,或者像google搜索框一样什么也不做。其次,我希望搜索结果首先显示在下拉列表中,然后是一个按钮,以便用户需要更多搜索结果时使用 请帮助进行这些更改。任何帮助都将不胜感激 <h2>Users:</h2><br> <?php $username=""; $output = ''
<h2>Users:</h2><br>
<?php
$username="";
$output = '';
if (isset($_POST['search'])){
$search_query = $_POST['search'];
$search_q = $_POST['search'];
$search_query = preg_replace("#[^0-9a-z]#i","", $search_query);
$search_q = preg_replace("#[^0-9a-z]#i","", $search_q);
$query = mysql_query("SELECT * FROM users WHERE username LIKE '%$search_query%' OR last_name LIKE '%$search_query%'") or die ("Could not search");
$count = mysql_num_rows($query);
if($count == 0 ||) {
$output = 'No Results Found.';
}
else{
while($row = mysql_fetch_array($query)){
$fname = $row['first_name'];
$lname = $row['last_name'];
$id = $row['id'];
$output .= "<div><a href='profile.php?u=$row[username]'>$fname $lname</a></div>";
}
}
}
?>
<?php echo("$output");?>
<form method="post" action="search.php" id="search">
<input type="text" name="search" placeholder="Search..">
用户:
您应该知道,和在PHP5.5.0中被弃用,在PHP7.0.0中被删除。而且,$\u POST['search']
没有过滤掉潜在的SQL注入和其他恶意代码
无论如何,在检查数据库之前,您应该检查搜索字符串是否为空:
if (empty($POST['search'])) {
// do nothing or give error response
}
如果要限制为10个结果:
"SELECT * FROM users WHERE username LIKE '%$search_query%' OR last_name LIKE '%$search_query%' LIMIT 10"
. <代码>mysql*
函数在PHP5.5(在PHP7中完全删除)之后就被弃用了,如果可以的话,应该停止使用它们。您应该选择另一个允许您使用的API(在处理变量时确实应该使用),如mysqli.*
或PDO-see。如果查询为空,就不要执行查询。在客户端,您可以在输入中添加required
属性,在服务器端,您可以执行if(!empty($\u POST['search']){
,检查是否有任何值要搜索。我希望前10个值以下拉形式出现,然后在其他页面上保留(如果用户愿意)。