ajax-返回值 - 输入的关键字服务器中没找到相应的产品,php就给返回个undefind,怎么解决才能让关键字找不到的时候php不返回任何东西?
问题描述
1.我在input中输入关键字要找到服务器中的相关产品显示在下方:
<form action="">
<lable for="psearch"></lable>
<input class="psearch" name="psearch" type="search">
<div class="suggest">
<ul></ul>
</div>
</form>
2.php如下:
$kw = $_REQUEST['kw'];
include('config.php');
$conn = mysqli_connect($db_url, $db_user, $db_pwd, $db_name, $db_port);
$sql = "SET NAMES UTF8";
mysqli_query($conn,$sql);
$sql = "SELECT hname FROM media_hot WHERE hname LIKE '%$kw%'";
$result = mysqli_query($conn,$sql);
//从查询结果集中获取数据
$list = mysqli_fetch_all($result);
//[ ['XXXX'],['YYYY'] ]
for($i=0; $i<5; $i++){
$hname = $list[$i][0];
echo "<li>$hname</li>";
}
3.JS代码如下
$('.psearch').on('keyup',function(){
var k=$(this).val();
if(!k){ //用户没有任何输入
$('.suggest').css('display','none');
return;
}
$.ajax({
url: 'data/product_search.php?kw='+k,
success: function(html){
$('.suggest').css('display','block');
$('.suggest>ul').html(html);
};
});
});
4.问题是如果我的 kw=asdaf (服务器中找不到的关键字) 则php返回如下代码,会显示在我的html上,怎么解决让关键字找不到的时候php不返回值。
Notice: Undefined offset: 0 in C:xampphtdocsselef_projectMediadataproduct_search.php on line 19
Notice: Undefined offset: 1 in C:xampphtdocsselef_projectMediadataproduct_search.php on line 19
Notice: Undefined offset: 2 in C:xampphtdocsselef_projectMediadataproduct_search.php on line 19
Notice: Undefined offset: 3 in C:xampphtdocsselef_projectMediadataproduct_search.php on line 19
Notice: Undefined offset: 4 in C:xampphtdocsselef_projectMediadataproduct_search.php on line 19
php没有输出undefind,是php报错了。
没查询到内容的时候$list
数组为空,后面$list[$i][0]
是不存在的,所以报错。
另外
1、请使用prepare
和bind_param
防止注入。
2、需要多少条就查询多少条,不要全部查询出来再循环取要的条数。
$kw= '%'.urldecode($_REQUEST['kw']).'%';
include('config.php');
$conn = mysqli_connect($db_url, $db_user, $db_pwd, $db_name, $db_port);
$sql = "SET NAMES UTF8";
mysqli_query($conn,$sql);
$sql = "SELECT hname FROM media_hot WHERE hname LIKE ? limit 5";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s",$kw);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array()) {
$hname = $row['hname'];
echo "<li>$hname</li>";
}
这篇关于ajax-返回值 - 输入的关键字服务器中没找到相应的产品,php就给返回个undefind,怎么解决才能让关键字找不到的时候php不返回任何东西?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!