我做了一个非常基本的搜索表单,从数据库中获取用户名。它有两个问题,每当我在空搜索框上按Enter键它显示整个数据库而不是显示错误消息或只是像谷歌搜索框一样。其次,我希望搜索结果首先显示在下拉列表中,然后在用户想要更多搜索结果时显示一个按钮。
请帮助我们进行这些更改。任何帮助都将受到赞赏。
<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..">
答案 0 :(得分:0)
您应该意识到mysql_query(),mysql_num_rows()和mysql_fetch_array()在PHP 5.5.0中已全部弃用并在PHP 7.0.0中删除。 $_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"