0

在浏览器的文本字段中输入数据时,它应该从数据库中获取数据并相应地显示。(例如:像谷歌)。这是我的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>

请建议我哪里错了....!!!

4

2 回答 2

0

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>
于 2012-06-22T12:51:07.857 回答
0

试试这个

$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%"");
于 2012-06-22T12:51:47.913 回答