使用Ajax和PHP检索数据的搜索框

使用Ajax和PHP检索数据的搜索框,php,mysql,ajax,Php,Mysql,Ajax,下面是索引页:包含以下代码:数据按预期填充到div中 <h2>Search for users</h2> <input type="text" name="search" id="search" autocomplete="off" placeholder="Enter Customer ID here....">

下面是索引页:包含以下代码:数据按预期填充到div中

   <h2>Search for users</h2>
             <input type="text" name="search" id="search" autocomplete="off" placeholder="Enter Customer ID here....">
             <div id="output"></div>


<script type="text/javascript">
    $(document).ready(function(){
       $("#search").keyup(function(){
          var query = $(this).val();
          if (query != "") {
            $.ajax({
              url: 'ajax-db-search.php',
              method: 'POST',
              data: {query:query},
              success: function(data){
 
                $('#output').html(data);
                $('#output').css('display', 'block');
                $("#search").focusin(function(){
                    $('#output').css('display', 'block');
                });
              }
            });
          } else {
          $('#output').css('display', 'none');
        }
      });
    });
  </script>
搜索用户
$(文档).ready(函数(){
$(“#搜索”).keyup(函数(){
var query=$(this.val();
如果(查询!=“”){
$.ajax({
url:'ajaxdb search.php',
方法:“POST”,
数据:{query:query},
成功:功能(数据){
$('#output').html(数据);
$('#output').css('display','block');
$(“#搜索”).focusin(函数(){
$('#output').css('display','block');
});
}
});
}否则{
$('#output').css('display','none');
}
});
});
这是ajaxdb search.php页面。(在IF标记中,我用==尝试了它,但还没有好运。)


嗯,你说你试过
=
应该是
=
而不是
=

首先请注意您的sql查询任何类型的查询都应该是prepare语句,即使您信任您的用户

现在请注意:

echo“planA”=“planA”?“是”:“否”//输出号。你试过这个吗?
编辑:我忽略了“但由于某些原因,$plan变量始终是planA..”,这是因为ifs中的
=

$plan=”“;
如果($plan=“a”){
echo$计划;
}
如果($plan=“b”){
echo$计划;
}
如果($plan=“c”){
echo$计划;
}
//产出:abc
最后,请使用else if,您不需要检查3次是否只能是1个选项

编辑2:我想你还有一段路要走。请查看下面的代码。 我认为,以下是解决您的bug的完整方法:


这里我使用
php-pdo
执行搜索任务

我正在创建一个两个文件'search.php'是一个向
query.php
文件发送ajax请求的文件

search.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Search</title>
    <!-- jQuery cdn link -->
    <script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
</head>
<body>
    <input type="text" id="search" placeholder="Search">

    <div class="table-div" style="display: none"></div>
</body>
</html>
<script>

$(document).ready(function(){
    $("#search").keyup(function(){
        $.get("/query.php", {data:$(this).val()}, function(data, status){
            let row = JSON.parse(data);
            let table = "";

            table += "<table>";
                table += "<thead>";
                    table += "<tr>";
                        table += "<th>Customer name</th><th>Customer salary</th>";
                    table += "</tr>";
                table += "</thead>";
                table += "<tbody>";
                    if(row.data != "No data found") {
                        $.each(row.data, function(key, value){
                            table += "<tr>";
                                table += "<td>"+ value.customer_name +"</td>";
                                table += "<td>"+ value.cust_sal +"</td>";
                            table += "</tr>";
                        });
                    }
                table += "</tbody>";
            table += "</table>";

            $(".table-div").html(table);
            $(".table-div").show();
        });
    });
});

</script>

搜寻
$(文档).ready(函数(){
$(“#搜索”).keyup(函数(){
$.get(“/query.php”,{data:$(this.val()},函数(数据,状态){
让row=JSON.parse(数据);
让表=”;
表+=”;
表+=”;
表+=”;
表+=“客户名称客户薪资”;
表+=”;
表+=”;
表+=”;
如果(row.data!=“未找到数据”){
$.each(行、数据、函数(键、值){
表+=”;
表+=“”+value.customer_name+“”;
表+=“”+value.cust_sal+“”;
表+=”;
});
}
表+=”;
表+=”;
$(“.table div”).html(表格);
$(“.table div”).show();
});
});
});
query.php

<?php

    // This is a database connectivity
    $conn = new PDO("mysql:host=localhost; dbname=test;", 'root', '');

    if(isset($_GET['data']))
    {
        $query = "%".$_GET['data']."%";
        $searchSQL = "SELECT * FROM cust WHERE customer_name LIKE :cname";
        $searchState = $conn->prepare($searchSQL);
        $searchState->bindParam(":cname", $query);

        if($searchState->execute())
        {
            if($searchState->rowCount() > 0)
            {
                $data = $searchState->fetchAll();
            }
            else
            {
                $data = "No data found";
            }
        }

        echo json_encode(["data" => $data]);
    }

?>


单个
=
指定一个值,在您的代码中,结果被评估为布尔结果-
true
。至少在这些条件下,您应该使用
==
。执行查询后,您不会获取查询结果。您只需在
$query
数组中为元素赋值,但此时该变量是一个字符串。您可能有一个服务器错误日志,其中充满了PHP警告和错误。找到错误日志,修复你在那里看到的所有错误,再次询问你的代码是否仍然不能正常工作。但始终适用于最后一个条件@TangentiallyVertically正如我已经指出的,您的代码也存在其他问题。请在更新部分@TangentiallyVertically$plan中的图像始终仅为planA中获取一个战利品。它永远不会改变。它没有在@ziaahsan中循环。@DoorsShelters您的代码中有拼写错误。请重新检查和编辑代码。例如:$query=“选择*从创建客户位置…”;然后$plan=$query['plan'];但是$query是作为数组访问的字符串吗?@DoorsShelters请参见编辑2。我已经对我的职位做了更改。这或许会让事情变得明朗起来。
<?php

    // This is a database connectivity
    $conn = new PDO("mysql:host=localhost; dbname=test;", 'root', '');

    if(isset($_GET['data']))
    {
        $query = "%".$_GET['data']."%";
        $searchSQL = "SELECT * FROM cust WHERE customer_name LIKE :cname";
        $searchState = $conn->prepare($searchSQL);
        $searchState->bindParam(":cname", $query);

        if($searchState->execute())
        {
            if($searchState->rowCount() > 0)
            {
                $data = $searchState->fetchAll();
            }
            else
            {
                $data = "No data found";
            }
        }

        echo json_encode(["data" => $data]);
    }

?>