尝试让我的实时搜索“正常”工作。当我输入'a'时,我会在框下方的某个区域(如下拉菜单)中获取'aussie'和'australian'(不确定这些来自哪里,因为它们不在我的数据库中)。我可以选择其中一个,然后填充文本框。建议的代码使用我不熟悉的mysqli。当我添加一个典型的SELECT语句时,我习惯于看到正确的数据(或多或少),但它不可选。我说或多或少的原因是'a'给我'aussie'和'australian'就像之前一样(在下拉中)。添加'n'(即搜索'an')会为我提供数据库中包含DIV中字符串但不可选择的所有名称的列表。
的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#faq_search_input").keyup(function() {
var faq_search_input = $(this).val();
var dataString = 'keyword='+ faq_search_input;
if(faq_search_input.length>1) {
$.ajax({
type: "GET",
url: "ajax-search.php",
data: dataString,
success: function(server_response) {
document.getElementById("searchresultdata").style.display = "block";
$('#searchresultdata').html(server_response).show();
}
});
} return false;
});
});
</script>
</head>
<body>
<div class="searchholder">
<input name="query" class="quicksearch" type="text" id="faq_search_input" />
<div id="searchresultdata" class="searchresults" style="display:none;"> </div>
</div>
</body>
</html>
Ajax的search.php中
<?php
//you must define your database settings
define("DB_HOST", "localhost");
define("DB_USERNAME", "root");
define("DB_PASSWORD", "");
define("DB_NAME", "mydb");
if(isset($_GET['keyword'])) {
$search = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if ($search->connect_errno) {
echo "Failed to connect to MySQL: (" . $search->connect_errno . ") " . $search->connect_error;
$search->close();
}
$keyword = trim($_GET['keyword']) ;
//original statement
//$query ="SELECT COLUMN_NAME FROM ".DB_NAME.".INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%".$keyword."%'";
//my edited statement
//$query ="SELECT name FROM ".DB_NAME.".INFORMATION_SCHEMA.COLUMNS WHERE name LIKE '%".$keyword."%'";
//basic sql statement
$query ="SELECT name FROM users WHERE name LIKE '%".$keyword."%'";
$values = $search->query($query);
if( $search->error ) exit( $search->error );
if($values->num_rows != 0) {
while($row = $values->fetch_assoc()) {
echo $row['name']."<br>";
}
}
else {
echo 'No Results for :"'.$_GET['keyword'].'"';
}
}
?>
数据库包含一个名为users的用户数据表,其中包含名为name的列。 有什么想法吗?