Mysql\u fetch\u数组php和jquery自动完成

Mysql\u fetch\u数组php和jquery自动完成,php,jquery,arrays,jquery-autocomplete,Php,Jquery,Arrays,Jquery Autocomplete,所以我让Jquery autocomplete使用mysql\u fetch\u数组处理mysql,我知道我知道 我在返回一行中的每一列时遇到了一些问题,到目前为止,表的name列上发生了一个请求,并从该行返回name列 我的“事件”表如下所示 name event price date color drinks 我要做的是搜索“名称”、“事件”、“日期”和“颜色”列 但是,当在任何列中找到匹配项时,都可以按特定顺序显示来自这些列的结果 因此,如果我的“事件”表

所以我让Jquery autocomplete使用mysql\u fetch\u数组处理mysql,我知道我知道

我在返回一行中的每一列时遇到了一些问题,到目前为止,表的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
有人在搜索“红色海伦”,自动补全会这样填写

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);
非常感谢您抽出宝贵的时间。

您可以:

$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注入开放。

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

$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中已被弃用。

您是否启动了jQuery代码?或者Html?OT您不应该将用户输入直接放入这样的查询中。应该首先对其进行转义,或者最好使用参数化查询。了解SQL注入。如何获取$row[event]或$row[color]?您已经在select语句中选择了
name
,您还必须在select语句中选择这些内容