我想设置一个搜索框,这样当您输入人名时,它会从数据库中选择该人员的详细信息。
这是我的搜索框:
<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。
答案 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)
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>";
}
?>