Mysql_fetch_array php和jquery自动完成

时间:2013-01-10 13:45:00

标签: php jquery arrays jquery-autocomplete

所以我使用mysql_fetch_array使用mysql进行Jquery自动完成,我知道我知道,

我在连续返回每一列时遇到一些麻烦,到目前为止,在表的name列上发出了一个请求,并从该行返回name列。

我的“事件”表格如下所示,

name     event    price    date    color    drinks

我想要做的是搜索,“名称”,“事件”,“日期”和“颜色”列 但是当在任何列中找到匹配项时,以某个顺序显示列中的结果。

因此,如果我的“事件”表包含以下数据

name     event       price     date             color         drinks
Helen    Topmark      31       03/02/2013       red            brandy
Gregg    maxpower     27       01/02/2013       red            whiskey

并且有人搜索“red helen”,自动完成将像这样填充

Helen Topmark red 03/02/2013

如果有人搜索“红色”,我想优先考虑日期

Gregg maxpower red 01/02/2013
Helen Topmark red 03/02/2013

这是我目前的代码

$req = "SELECT name "
    ."FROM events "
    ."WHERE name LIKE '%".$_REQUEST['term']."%' "; 

$query = mysql_query($req);

while($row = mysql_fetch_array($query))
{
    $results[] = array('label' => $row['name']);
}

echo json_encode($results);

非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

$req = "SELECT name, event, color, date FROM events WHERE (name LIKE '%".$_REQUEST['term']."%' OR event LIKE '%".$_REQUEST['term']."%' OR date LIKE '%".$_REQUEST['term']."%' OR color LIKE '%".$_REQUEST['term']."%')";

你的while循环:

while($row = mysql_fetch_array($query))
{
    echo $row['name'] . ' ' . $row['event'] . ' ' . $row['color'] . ' ' . $row['date']; 
}

只是给出一些方向,仍然可以打开sql注入。

答案 1 :(得分:0)

更新您的查询,如下所示:

$search  =  $_REQUEST['term'];
$pieces = explode(" ", $search);
$in = "";
foreach($pieces as $val) {
    $in = "'".$val."' IN (name,color) AND ";
    if(end($pieces) === $val)
        $in = "'".$val."' IN (name,color)";
}

注意:mysql_query()这些函数在PHP5.3中已弃用。