我正在搜索栏上,其旁边有一个连接到数据库的按钮。单击按钮,它将在搜索栏中获取数据,搜索数据库并显示结果。到目前为止这是有效的。
我无法弄清楚即使搜索栏中的数据丢失,如何进行搜索。例如,用户放置" ma"在搜索栏中。它仍然会显示" mark"," marge"," may"和#34; ma"。怎么做?
index.php(搜索栏)
<SCRIPT>
function loadSearch()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDivs").innerHTML=xmlhttp.responseText;
}
}
var bar = document.getElementById('sbar').value;
xmlhttp.open("GET","search.php?search="+bar,true);
xmlhttp.send();
}
</SCRIPT>
<span class="searchbox">
<input type="text" class="searchbar" id = "sbar" autocomplete="off" placeholder="Search for site..." autocorrect="off" autocapitalize="off">
</input>
</span>
的search.php
<?php
$getsearch = $_GET['search'];
$conn = mysqli_connect("localhost", "root", "", "test1");
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$today = date("Y-m-d");
$sql = "SELECT name, COUNT(*) as Referrals,
SUM(CASE WHEN leadstatus = 'Hired' THEN 1 ELSE 0 END) as Hired,
SUM(CASE WHEN leadstatus = 'Failed' THEN 1 ELSE 0 END) as Failed
FROM table1
WHERE name > '' AND name = '".$getsearch."' AND month(date) = MONTH(NOW()) AND year(date) = YEAR(NOW())
GROUP BY name
ORDER BY Referrals DESC";
$result = mysqli_query($conn, $sql);
?>
答案 0 :(得分:4)
在你的sql中将.Name
运算符替换为=
并使用部分匹配符号LIKE
这里我将%
放在两边,以便搜索字符串中的任何位置。
如果仅在左侧或右侧使用取决于您的结果也会因搜索条件而异。
%
答案 1 :(得分:0)
在查询中的where语句中使用LIKE而不是=
Where name like '%ma%'
会让你搜索包含ma里面的名字。
Where name like '%$getsearch%'
在您的特定代码中