创建一个php搜索栏

时间:2013-05-06 16:40:31

标签: php

我想设置一个搜索框,这样当您输入人名时,它会从数据库中选择该人员的详细信息。

这是我的搜索框:

<html>
<body>

<form action="users.php" method="GET">
<input id="search" type="text" placeholder="Type here">
<input id="submit" type="submit" value="Search">
</form>
</body>
</html>

然后这是我的PHP返回用户:

<?php 

$connection = mysql_connect("localhost","root","");

mysql_select_db("blog1")or die(mysql_error());


$result = mysql_query("SELECT username FROM member");
 while ($row = mysql_fetch_assoc($result)) {
echo "<div id='link' onClick='addText(\"".$row['username']."\");'>" . $row['username'] . "</div>";  
 }


  ?>

如何让它只返回我在搜索栏中输入的用户而不是所有用户?任何帮助都会很棒,因为我只是学习PHP。

5 个答案:

答案 0 :(得分:4)

您需要在SQL查询中添加WHERE子句,以过滤具有匹配用户名(使用=)或类似用户名(使用LIKE)的用户。例如:

SELECT * FROM users WHERE username LIKE '%querystring%'

将返回用户名包含“querystring”的所有用户。

此外,由于您可能会在评论中受到轰炸,mysql_*功能已弃用。您至少应切换到mysqli_*,甚至更好,切换到PDO。

答案 1 :(得分:2)

拳头不要在你的代码中使用mysql_ *,使用PDO或mysqli _ *

<?php 

$connection = mysql_connect("localhost","root","");

mysql_select_db("blog1")or die(mysql_error());

$safe_value = mysql_real_escape_string($_POST['search']);

$result = mysql_query("SELECT username FROM member WHERE `username` LIKE %$safe_value%");
 while ($row = mysql_fetch_assoc($result)) {
echo "<div id='link' onClick='addText(\"".$row['username']."\");'>" . $row['username'] . "</div>";  
 }


  ?>

第二次编辑你的HTML

<form action="users.php" method="GET">
<input id="search" name="search" type="text" placeholder="Type here">
<input id="submit" type="submit" value="Search">
</form>

答案 2 :(得分:0)

  

Please, don't use mysql_* functions in new code.   它们不再被维护,deprecation process已经开始了。看到   red box?   了解prepared statements,   并使用PDO或   MySQLi - 这个   article会   帮你决定哪个。

就个人而言,我会使用像Bootstrap的typeahead函数。您可以将用户列表预加载到javascript数组中,当用户输入时,它将开始过滤。有关Bootstrap的预先输入的更多信息,请访问:http://twitter.github.io/bootstrap/javascript.html#typeahead

要按照目前的方式进行,我会使用以下代码(我使用了MySQLi扩展名)

<?php

$connection = new mysqli('localhost', 'root', 'password', 'DB_NAME');

$search = $_GET['search'];
$search = $mysqli -> real_escape_string($search);

$query = "SELECT username FROM member WHERE username LIKE '%".$search."%'";
$result= $mysqli -> query($query);

while($row = $result -> fetch_object()){
    echo "<div id='link' onClick='addText(\"".$row -> username."\");'>" . $row -> username . "</div>";  
}

通过添加WHERE username LIKE '%".$search."%',它会根据您键入的字词开头或结尾的用户名过滤记录。

如果您的用户名为“Alex”且搜索字词为“Ale”,则结果将在返回的结果中显示,如果您搜索“lex”,则Alex将在返回的结果中。

答案 3 :(得分:-1)

  • 提交GET请求
  • 获取变量并将其转义以阻止sqlinjk
  • 搜索将用户名设置为传递内容的数据库记录
  • 打印结果

HTML

<form action="users.php" method="GET">
  <input name="username" id="search" type="text" placeholder="Type here">
  <input id="submit" type="submit" value="Search">
</form>

PHP

<?php
$connection = mysql_connect("localhost","root","");
mysql_select_db("blog1")or die(mysql_error());
$username = mysql_real_escape_string($_GET['username']);
$result = mysql_query("SELECT * FROM member WHERE username = '" + $username + "'");
print_r($result);

答案 4 :(得分:-3)

<form action="users.php" method="GET">
<input id="search" name="keywords" type="text" placeholder="Type here">
<input id="submit" type="submit" value="Search">
</form>
</body>
</html>

<?php 

$connection = mysql_connect("localhost","root","");

mysql_select_db("blog1")or die(mysql_error());

$keywords = isset($_GET['keywords']) ? '%'.$_GET['keywords'].'%' : '';

$result = mysql_query("SELECT username FROM member where username like '$keywords'");
while ($row = mysql_fetch_assoc($result)) {
    echo "<div id='link' onClick='addText(\"".$row['username']."\");'>" . $row['username'] . "</div>";  
}

?>