自动完成jQuery / PHP / MySQL不返回结果

时间:2014-06-02 14:25:20

标签: php jquery mysql autocomplete

我第一次使用jQuery自动完成功能。我创建了一个简单的数据库,其中包含多个用户名和一个简单的搜索框,以练习我刚读过的自动完成功能。我已经验证我的mysql查询是在mysql中运行的。我还验证了我已连接到数据库。我仍然无法得到自动建议条款。我认为(尽管不是100%肯定)我已将我的问题与我使用$ _REQUEST [' term']命令的方式隔离开来。所以有两个问题:我是否正确地使用了这个命令,并且我是如何完成自动完成的?注意:我知道我还没有对输入进行消毒。我正在练习自动填充功能

其他信息"如果我取出$ _request并只查询所有用户,它将返回一个包含所有数据库用户的自动完成。无论我键入什么键,都会发生这种情况。这会让我相信它收到了ajax请求。

这是我的控制台显示的内容

enter image description here

这是我的actest.php

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>AutoComplete Test</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">

  <script> jQuery(document).ready(function($){
    $('#username').autocomplete(
        {source:'suggest_username.php',
        minLength:2
        });
    });
</script>


</form>
</head>
<body>

<form action="actest.php" method="POST">
    Enter Username:
    <input type="text" id="username" />

    <br />
    <input type="submit" value="Search" />


</body>
</html>

这是我的suggest_username.php

<?php


// here we set the database information
$SERVER = 'localhost';
$USER = 'user';
$PASS = 'password';
$DATABASE = 'database';

// we are instantiating the mysqli database object
$db = new mysqli($SERVER, $USER, $PASS, $DATABASE);

// error check
if($db->connect_errno > 0){

      // report an error
die('Unable to connect to database [' . $db->connect_error . ']');
}



$rs = 'SELECT * FROM users WHERE user LIKE "($_REQUEST['term']) .'%'"';


$result = $db->query($rs);

$data = array();

    while ($row = $result->fetch_assoc()) 
    {
        $data[] = array(
            'label' => $row['user'] ,
            'value' => $row['user']
        );
    }


// jQuery wants JSON data
echo json_encode($data);
flush();

2 个答案:

答案 0 :(得分:3)

我建议这行有一个语法错误:

$rs = 'SELECT * FROM users WHERE user LIKE "($_REQUEST['term']) .'%'"';

看起来应该是这样的:

$rs = 'SELECT * FROM users WHERE user LIKE "(' . $_REQUEST['term'] . ')%"';

不确定您是否需要括号,并且您可能希望确保安全,以便您无法获得和SQL注入攻击

答案 1 :(得分:0)

如果您使用谷歌浏览器,请按F12打开控制台。在控制台窗口中,单击“网络”选项卡,然后按F5重新加载页面。 现在尝试在自动完成字段中键入内容并在控制台中查找suggest_username.php。确保响应状态代码不是404。