我使用Ajax和PHP从MySQL检索数据而不刷新,问题是我的结果显示重复。我只想要显示一个用户名实例。
包含用户名的表有一个UNIQUE INDEX设置,不允许重复的名称,但我的(我认为)我的while语句,因为我认为这导致结果重复
我该怎么办?更正此选项只显示每个用户名的一次实例。提前抱歉,我不知道,但希望有人可以提供帮助。
<?php
include('..\db.php');
$con = mysqli_connect($dbsrvname, $dbusername, $dbpassword, $dbname);
$q1 = mysqli_query($con,"SELECT * FROM tbl1 username");
$data="";
// if the search is true
if(isset($_POST['search']))
{
//
$var = $_POST['search'];
if($query = mysqli_query($con,"SELECT username FROMtbl1 WHERE username LIKE '%$var%'"))
{
// possible creating duplicate results
while($row = mysqli_fetch_array($query))
{
$data .= $data . '<div>' . $row['username'] . '</div>';
}
echo $data;
}
}else{
}
?>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.0.0.js"
integrity="sha256-jrPLZ+8vDxt2FnE1zvZXCkCcebI/C8Dt5xyaQBjxQIo="
crossorigin="anonymous"></script>
<script>
$(function(){
$('.input').keyup(function(){
var a = $('.input').val();
$.post('livesusers.php',{"search":a},function(data){
$('#display').html(data);
});
});
});
</script>
</head>
<body>
// form to input text and search
<form action= "livesusers.php" method='POST'>
<input type="text" name="search" class='input'>
</form>
<div id='display' style='margin-top:100px'></div>
</body>
答案 0 :(得分:1)
如你所说,错误发生在你的while循环中。你在每个cicle上连接两次。
尝试替换它:
// possible creating duplicate results
while($row = mysqli_fetch_array($query))
{
$data .= $data . '<div>' . $row['username'] . '</div>';
}
echo $data;
到此:
while($row = mysqli_fetch_array($query))
{
$data .= '<div>' . $row['username'] . '</div>';
}
echo $data;