在 php 和 html 上编辑文本过滤器错误


Edittext filter error on php and html

在浏览器的文本字段中输入数据时,它应该从数据库中获取数据并相应地显示。(例如:像谷歌一样)。这是我的 php 代码:

    <?php
    mysql_connect("localhost","root","MobixMySQL") or die(mysql_error());
    mysql_select_db("filter") or die(mysql_error());
    $partialStates = $_POST['partialStates'];
    $states = mysql_query("SELECT name FROM list1 WHERE name LIKE "%$partialStates%"");
    while($state = mysql_fetch_assoc($states)) {
    echo "<div>".$state['name']."</div>";
   }
   ?>

下面是我的 html 代码:

   <html>
   <head>
   <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript">
     function getStates(value){
     $.post("getStates.php",{partialStates:value},function(data){
     $("#results").html(data);
    });
    }
   </script>
    </head>
    <body>
    <input type="text" onKeyUp="getStates(this.value)" >
    <div id="results"></div>
    </body>
    </html>

请告诉我哪里错了..!!

SQL 中的引号错误...以及注射。 查看PDO的未来发展

$partialStates = mysql_real_escape_string($_POST['partialStates']);
$states = mysql_query("SELECT `name` FROM list1 WHERE `name` LIKE '%$partialStates%'");

编辑

由于您正在使用jQuery尝试更改onkeyup事件。 如果您仍然遇到错误,请使用FireBug或浏览器javascript调试器之类的东西来检查其他错误。 请尝试以下操作(未经测试):

<script type="text/javascript">
$(document).ready(function() {
    $('input#myFilter').keyup(function(event) {
        $.post("getStates.php",{partialStates:$(this).val()},function(data){
            $("#results").html(data);
        });
    }).keydown(function(event) {
        if (event.which == 13) {
            event.preventDefault();
        }  
    });
});
</script>
</head>
<body>
<input type="text" id="myFilter">
<div id="results"></div>

试试这个

$states = mysql_query("SELECT name FROM list1 WHERE name LIKE '%".mysql_real_escape_strings($partialStates)."%'");

取而代之的是这个

$states = mysql_query("SELECT name FROM list1 WHERE name LIKE "%$partialStates%"");