jquery php实时搜索
我使用ajax和php进行实时搜索 JQUERY:jquery php实时搜索,php,jquery,livesearch,Php,Jquery,Livesearch,我使用ajax和php进行实时搜索 JQUERY: $("#search").keyup(function() { var search_input = $(this).val(); var dataString = 'keyword='+ search_input; if(search_input.length>1){ $.ajax({ type: "GET", url: "include/search.php?diary_da
$("#search").keyup(function() {
var search_input = $(this).val();
var dataString = 'keyword='+ search_input;
if(search_input.length>1){
$.ajax({
type: "GET",
url: "include/search.php?diary_date",
data: dataString,
beforeSend: function() {
$('#loading').addClass('loading');
}, success: function(server_response) {
$('#searchresultdata').html(server_response).show();
$('span#faq_category_title').html(search_input);
}
});
}return false;
});
PHP:
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name LIKE '%$keyword%'
OR l_name LIKE '%$keyword%'
OR email LIKE '%$keyword%'
OR postcode LIKE '%$keyword%'";
我想要搜索结果,从第一个字母开始搜索,而不是从中间或最后一个字母开始搜索。例如:关键字=JO
结果我想要=
*约翰·贝克
*乔纳森·威尔科 *凯蒂·琼 有一段时间,系统不仅接收第一个、甚至中间和最后一个单词
*托尼·内斯乔
*BAJOZ ZACKS只需从每个
LIKE
字符串中删除第一个%
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name LIKE '$keyword%'
OR l_name LIKE '$keyword%'
OR email LIKE '$keyword%'
OR postcode LIKE '$keyword%'";
这就是说,您应该真正、真正地研究使用PDO或类似工具并发送绑定查询,其中每个参数都会正确转义以防止SQL注入攻击
但是,如果这样做,SQL会变得稍微复杂一些,因为您无法在字符串中绑定参数,因此添加%
必须作为SQL连接:
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name LIKE CONCAT(?, '%')
OR l_name LIKE CONCAT(?, '%')
OR email LIKE CONCAT(?, '%')
OR postcode LIKE CONCAT(?, '%')";
(然后生成一个准备好的语句句柄并使用适当的参数执行-您会在Stackoverflow的其他地方找到大量示例)。只需从每个
LIKE
字符串中删除第一个%
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name LIKE '$keyword%'
OR l_name LIKE '$keyword%'
OR email LIKE '$keyword%'
OR postcode LIKE '$keyword%'";
这就是说,您应该真正、真正地研究使用PDO或类似工具并发送绑定查询,其中每个参数都会正确转义以防止SQL注入攻击
但是,如果这样做,SQL会变得稍微复杂一些,因为您无法在字符串中绑定参数,因此添加%
必须作为SQL连接:
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name LIKE CONCAT(?, '%')
OR l_name LIKE CONCAT(?, '%')
OR email LIKE CONCAT(?, '%')
OR postcode LIKE CONCAT(?, '%')";
(然后生成一个准备好的语句句柄,并使用适当的参数执行-您将在Stackoverflow上的其他地方找到大量示例)。您可以像这样使用运算符:
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name REGEXP '^$keyword'
OR l_name REGEXP '^$keyword'
OR email REGEXP '^$keyword'
OR postcode REGEXP '^$keyword'";
您可以这样使用运算符:
$q = "SELECT id_user, f_name, l_name, postcode, email,telp FROM user
WHERE f_name REGEXP '^$keyword'
OR l_name REGEXP '^$keyword'
OR email REGEXP '^$keyword'
OR postcode REGEXP '^$keyword'";
简单,在您的查询中将
%
想象为*
,因此如果您发出第一个%
,它将像JO*
一样搜索,但在SQL中它的JO%
简单,在您的查询中想象%
为*
,因此如果您发出第一个%
它将像JO*
一样搜索,但在SQL中它的JO%