循环时重复结果PHP查询

时间:2016-07-04 13:21:25

标签: php mysql

我使用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>

1 个答案:

答案 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;