Php jQuery UI-将源更改为MySQL数据

Php jQuery UI-将源更改为MySQL数据,php,jquery,jquery-autocomplete,Php,Jquery,Jquery Autocomplete,我正在尝试在网页中创建几个自动完成字段。我有两个正在工作,一个使用本地数组作为源,另一个使用名为search.php的页面,但使用search.php的一个不工作 以下是基本页面的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Autocomplete - Remote datasource</t

我正在尝试在网页中创建几个自动完成字段。我有两个正在工作,一个使用本地数组作为源,另一个使用名为search.php的页面,但使用search.php的一个不工作

以下是基本页面的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Remote datasource</title>
    <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
    <script src="../../jquery-1.6.2.js"></script>
    <script src="../../ui/jquery.ui.core.js"></script>
    <script src="../../ui/jquery.ui.widget.js"></script>
    <script src="../../ui/jquery.ui.position.js"></script>
    <script src="../../ui/jquery.ui.autocomplete.js"></script>
    <link rel="stylesheet" href="../demos.css">
    <style>
    .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
    </style>
  <script type="text/javascript">

 $(function() {

      var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];

      $("#tags").autocomplete({

          source: availableTags

      });

  });


 $(function() {

      var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];

      $("#tags2").autocomplete({

          source: "search2.php",
          minLength: 3

      });

  });


  </script>



  <input id="tags" />

  <input id="tags2" />




</body>
</html>

jQuery UI自动完成-远程数据源
.ui自动完成加载{背景:白色url('images/ui-anim_basic_16x16.gif')右中心无重复;}
$(函数(){
var availableTags=[“c++”、“java”、“php”、“coldfusion”、“javascript”、“asp”、“ruby”、“python”、“c”、“scala”、“groovy”、“haskell”、“perl”];
$(“#标记”).autocomplete({
资料来源:availableTags
});
});
$(函数(){
var availableTags=[“c++”、“java”、“php”、“coldfusion”、“javascript”、“asp”、“ruby”、“python”、“c”、“scala”、“groovy”、“haskell”、“perl”];
$(“#标记2”)。自动完成({
来源:“search2.php”,
最小长度:3
});
});
下面是search.php页面代码

<?php

    // PHP5 Implementation - uses MySQLi.
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
    $db = new mysqli(localhost', 'username' ,'password', 'database_name');

    if(!$db) {
        // Show error if we cannot connect.
        echo 'ERROR: Could not connect to the database.';
    } 


$term = $_GET['term'];   

$result = $db->query("SELECT registeredName FROM names WHERE registeredName LIKE '%".$term."%' ");


$array = array();   

while ($data = mysql_fetch_array($result))   
{   
    $row_array['id'] = $data['id'];   
    $row_array['value'] = "$data[value]";   

    array_push($array, $row_array);   
}   

echo json_encode($array); 


?>
史塔根

在php文件中,您将创建一个多维数组,其中包含db表中的id和值。在上面的autocomplete中,您引用的是硬编码的数组,它是一维的(单列),这让我相信autocomplete可能无法处理第二种情况下的多维数组

尝试在php赋值中从数组中取出id列(只需注释掉这一行),然后用值填充(我假设这是真正的自动完成潜力所在)并传回该数组

看看这是否有帮助

罗斯

更新-Staggan-代码:

$row_array['value'] = "$data[value]";    
应该是: $row_数组['value']=$data['value']

我猜PHP会给你一个错误,你可以在你的httpd错误日志中查看,你的错误报告级别是这样的,它在json中不返回任何内容,因此不会为你填充自动完成数组。改变这个,让我知道


R

Staggan-同样在您的php中,您分配了行数组['value']-这个php是错误的。请参见上面的内容。另一方面,您应该使用mysqli或PDO将该db查询参数化,这样,如果它将在面向公众的机器上运行,它就不会被黑客注入sql。在使用$\u GET参数形成查询之前,还应该对其进行输入验证。似乎没有帮助。。我所做的是添加$result2=$result->fetch_object();邮件(“xxxx”,“期限”,打印($result2,1));它通过电子邮件向我发送了MySQL结果中的至少一个元素,因此我知道结果得到了一些数据,但填充响应似乎不起作用……最终解决了它!MySQL查询返回的是StdClass对象而不是数组。。。所以最后我不得不使用:while($data=$result->fetch_object()){$row_array['id']=$data->id;$row_array['value']=$data->value;array_push($array,$row_array);}这很有效。。。现在,我还希望能够使用附加参数调用搜索页面,以便在多个字段上使用相同的函数。。。。有什么建议吗?谢谢