PHP SQL JAVASCRIPT搜索不工作
我在一家公司的网站上工作,那里有一个搜索栏,用来按姓名搜索客户和员工的数据库 我有下面代码()的输出 但是它只在输出()中单独搜索firstname和lastname,我想让它结合起来搜索firstname和lastname。PHP SQL JAVASCRIPT搜索不工作,javascript,php,mysql,sql,mysqli,Javascript,Php,Mysql,Sql,Mysqli,我在一家公司的网站上工作,那里有一个搜索栏,用来按姓名搜索客户和员工的数据库 我有下面代码()的输出 但是它只在输出()中单独搜索firstname和lastname,我想让它结合起来搜索firstname和lastname。 我想做这样的搜索() 到目前为止我有这个代码 index.php <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=dev
我想做这样的搜索() 到目前为止我有这个代码 index.php
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>INDEX PAGE</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container all">
<br />
<h2 align="center">COMPANY NAME</h2><br />
<div class="form-group">
<div class="input-group">
<input type="text" name="search_text" id="search_text" placeholder="Search by Customer Details" class="form-control" />
</div>
</div>
<div id="result"></div>
</body>
</html>
<script>
$(document).ready(function(){
load_data();
function load_data(query)
{
$.ajax({
url:"fetch.php",
method:"POST",
data:{query:query},
success:function(data)
{
$('#result').html(data);
}
});
}
$('#search_text').keyup(function(){
var search = $(this).val();
if(search.length>=2){
if(search != '')
{
load_data(search);
}
}
else
{
load_data();
}
});
});
</script>
索引页
公司名称
$(文档).ready(函数(){
加载_数据();
函数加载\u数据(查询)
{
$.ajax({
url:“fetch.php”,
方法:“张贴”,
数据:{query:query},
成功:功能(数据)
{
$('#result').html(数据);
}
});
}
$(“#搜索_文本”).keyup(函数(){
var search=$(this.val();
如果(搜索长度>=2){
如果(搜索!='')
{
加载_数据(搜索);
}
}
其他的
{
加载_数据();
}
});
});
和第二个文件
fetch.php
<?php
$connect = mysqli_connect("localhost", "root", "root", "users_db")or die("ERROR");
$output = '';
if(isset($_POST["query"]))
{
$search = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM users_users
WHERE firstname LIKE '%".$search."%'
OR lastname LIKE '%".$search."%'
AND lastname LIKE '%".$search."%'
OR link LIKE '%".$search."%'
";
}
else
{
}
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
$output .= '
<div class="otp">
</div>
';
while($row = mysqli_fetch_array($result))
{
$output .= '
<div class="oup">
<a href="
'.$row["link"].'
">
'.$row["firstname"].'
'.$row["lastname"].'
</a>
</div>
';
}
echo $output;
}
else
{
echo '';
}
?>
上述代码有此输出…(输出1)
当我按空格键输入名字后,它会像(输出2)中一样空白
我想在键入名字后继续搜索,中间有空格键
像这样的。。在(输出3)中
我不熟悉php javascript和sql,所以请尝试为我详细介绍一下。
先谢谢你。
你们能给我一些技巧来优化更多的代码吗。在我给出答案之前,我应该说你们的代码是可以接受SQL注入的。您应该了解如何解决此安全问题 现在回答你的问题。要同时搜索firstname和lastname,您应该在搜索之前分离搜索词。大概是这样的:
// --- Separate the search items
if ( !empty($search) ){
$searchWords = explode(' ', $search);
$searchTerms = array();
foreach ($searchWords as $word) {
$word = trim($word);
if (!empty($word)) {
$searchTerms[] = "(firstname LIKE '%$word%' OR lastname LIKE '%$word%')";
}
}
}
// --- Search each search items
$query = "SELECT * FROM users_users WHERE".implode(' AND ', $searchTerms);
试试这个:
ALTER TABLE users_users ADD FULLTEXT(firstname, lastname, link);
$searchTerm = '+'.str_replace(' ','+',$search).'*';
$query = "SELECT * FROM users where MATCH(`firstname`,`lastname`,`link`) AGAINST (".searchTerm." IN BOOLEAN MODE)";
为什么要投否决票?你能解释一下或留下评论吗?