Php Jquery自动完成远程数据源
我试图使用jQueryUI的自动完成功能来查询数据库中的用户名。因此,用户输入一个类似于my db上的用户名,并支持自动完成功能,以便在下拉列表中猜测他们要查找的内容。不幸的是,我无法让后端脚本返回建议Php Jquery自动完成远程数据源,php,jquery,jquery-ui,jquery-autocomplete,Php,Jquery,Jquery Ui,Jquery Autocomplete,我试图使用jQueryUI的自动完成功能来查询数据库中的用户名。因此,用户输入一个类似于my db上的用户名,并支持自动完成功能,以便在下拉列表中猜测他们要查找的内容。不幸的是,我无法让后端脚本返回建议 <?php sleep( 3 ); // no term passed - just exit early with no response if (empty($_GET['term'])) exit ; $q = strtolower($_GET["term"]); // remov
<?php
sleep( 3 );
// no term passed - just exit early with no response
if (empty($_GET['term'])) exit ;
$q = strtolower($_GET["term"]);
// remove slashes if they were magically added
if (get_magic_quotes_gpc()) $q = stripslashes($q);
$sql = "SELECT * FROM users";
$r = mysql_query($sql);
$items = array();
if ( $r !== false && mysql_num_rows($r) > 0 ) {
while ( $a = mysql_fetch_assoc($r) ) {
$username = $a['username'];
array_push($items, $username);
}
}
$result = array();
foreach ($items as $key=>$value) {
if (strpos(strtolower($key), $q) !== false) {
array_push($result, array("id"=>$k, "label"=>$key, "value" => strip_tags($key)));
}
if (count($result) > 11)
break;
}
// json_encode is available in PHP 5.2 and above, or you can install a PECL module in earlier versions
echo json_encode($result);
/* echo $items; */
?>
脚本只返回一个空数组,即使它应该返回一个结果。我不知道这里出了什么问题 首先让我说,查询数据库并返回整个表以筛选结果是一种糟糕的方法。如果SQL查询从数据库中筛选数据,则执行速度会更快。无论如何,您都必须调用数据,为什么不过滤它并只返回相关结果呢 您需要向查询发送一个类似的参数,如下所示:
$sql = "SELECT * FROM users where username like :term";
(在本例中,我使用的是参数化查询,您应该使用它来防止SQL注入攻击。)
您还可以使用更不可靠的方法,如下所示:
$sql = "SELECT * FROM users WHERE username = ". $term;
参数化查询的参考:
Hmm,但是您知道脚本返回空数组的原因吗?看起来您的偏移值$q被分配了一个字符串$q=strtolower($\u GET[“term”])$q是您的偏移量,应该是根据文档在strpos中开始搜索的位置的数值:偏移量如果指定,搜索将从字符串开头开始计算此数量的字符。