Php JQuery搜索没有';我找不到所有的记录
我创建了一个页面,您可以在其中搜索数据库(PHP、MySQL、JQuery)。 它工作正常,但我有一个问题,我真的不明白。 如果我搜索“abbandonato”,它可以准确地工作,但是如果我搜索“abband”、“abbando”、“abbandon”、“abbandona”(以及字符串的其他部分),它就不能工作。返回的错误(警报中的文本)为“SyntaxError:输入意外结束”。为什么?如果查询找到“abbandonato”,则查询还必须找到字符串的一部分(“abbando”、“abbandon”、…)。 换句话说,我没有这个问题 代码如下: data2.phpPhp JQuery搜索没有';我找不到所有的记录,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我创建了一个页面,您可以在其中搜索数据库(PHP、MySQL、JQuery)。 它工作正常,但我有一个问题,我真的不明白。 如果我搜索“abbandonato”,它可以准确地工作,但是如果我搜索“abband”、“abbando”、“abbandon”、“abbandona”(以及字符串的其他部分),它就不能工作。返回的错误(警报中的文本)为“SyntaxError:输入意外结束”。为什么?如果查询找到“abbandonato”,则查询还必须找到字符串的一部分(“abbando”、“abband
$(function() {
// Funzione per l'autocomplete
$("#formSearch").submit(function(e) {
//Annulla default form action
e.preventDefault();
var ricerca= $("#tbSearch").val();
// Se il campo ricerca non è vuoto carico i dati
if ($("#tbSearch").val().length > 0) {
$('#searchResults').html("Caricamento...");
$.ajax({
url: 'data3.php',
method: 'POST',
asynch: false,
data: {
dati: 1,
ricerca:ricerca
}, // Argomenti mandati in POST
dataType: 'json',
success: function(data) {
$('#searchResults').html("Caricamento...");
var stringa = "";
for(var i in data) {
stringa += '<tr><td>' + data[i]['disc'] + '</td>';
stringa += '<td>' + data[i]['frm'] + '</td>';
stringa += '<td>' + data[i]['lex'] + '</td></tr>';
}
$('#searchResults').html(stringa);
},
error: function(xhr, status, error) {
alert(error);
}
});
}
});
});
$(函数(){
//每l'autocomplete的Funzione
$(“#formSearch”).submit(函数(e){
//环违约形式诉讼
e、 预防默认值();
var ricerca=$(“#tbSearch”).val();
//这是一个非常有趣的故事
if($(“#tbSearch”).val().length>0){
$('#searchResults').html(“Caricamento…”);
$.ajax({
url:'data3.php',
方法:“POST”,
asynch:false,
数据:{
达蒂:1,,
里塞卡:里塞卡
},//Argomenti mandati在POST中
数据类型:“json”,
成功:功能(数据){
$('#searchResults').html(“Caricamento…”);
var stringa=“”;
用于(数据中的var i){
stringa+=''+数据[i]['disc']+'';
stringa+=''+数据[i]['frm']+'';
stringa+=''+数据[i]['lex']+'';
}
$('#searchResults').html(stringa);
},
错误:函数(xhr、状态、错误){
警报(错误);
}
});
}
});
});
data3.php
<?php
require('inc/db_connection.php');
$dati = $_POST["dati"];
if($dati == 1) {
// Query
$result = mysql_query("SELECT tab1.disc, tab1.frm, tab2.lex lex
FROM tab1, tab2
WHERE tab1.disc = tab2.disc
AND BINARY LOWER(frm) LIKE BINARY LOWER('" . trim($_POST["ricerca"]) . "%')
LIMIT 0,500");
// Array per AJAX
$array_risultati = array();
if (mysql_error())
echo json_encode(array(mysql_error()));
else {
// Popolazione $array_risultati
while ($row = mysql_fetch_assoc($result)) {
$array_risultati[] = $row;
}
echo json_encode($array_risultati);
}
}
试试:
…较低的(frm)像二进制CONCAT(较低(“”).trim($\u POST[“ricerca”]),“%”.“”)…
我认为发生的情况是LOWER()
也在转换'%'
,可能会导致问题。将'%'
移出LOWER()
,看看会发生什么。您没有在PHP代码中传递JSON头。
在json\u encode
header('Content-Type: application/json');
尝试从查询中删除二进制文件
,然后像这样尝试
mysql_query("SELECT tab1.disc, tab1.frm, tab2.lex lex
FROM tab1, tab2
WHERE tab1.disc = tab2.disc
AND LOWER(frm) LIKE LOWER('".trim($_POST["ricerca"])."%')
LIMIT 0,500");
可以是二进制
将%
转换为附加到搜索值的其他代码,并生成数据库中找不到的其他单词
请参阅
如果需要进行区分大小写的匹配,请将列声明为
二进制的不要在查询中使用LIKE BINARY来强制转换非二进制
柱如果这样做,MySQL将不会在该列上使用任何索引
可能是函数未发送JSON。从jQuery中删除dataType:'json'
,并打印来自服务器的数据。它的async:false,
notasynch:false,
@php>json是空的,但我不明白为什么!如果我将查询放在PHPMyAdmin中,它可以正常工作。@RohanKumar:谢谢,但仍然不能工作。删除dataType:'json'
并添加console.log(数据)代码>在success之后:函数(数据){
并告诉我输出或在php代码ini\u集('display\u startup\u errors',1);ini\u集('display\u errors',1);错误报告(-1);