用户搜索查询到SQL的子句

时间:2013-04-26 18:23:58

标签: mysql sql

是否有预先存在的库会接受用户输入并将其转换为SQL WHERE子句?

例如,如果数据库包含first_namelast_nameaddress列,则用户可以输入以下内容:

John State St

并且库将构建一个查询,以便返回与生活在State St上的名为John的人匹配的行(或者就此而言,生活在John St上的名为State的人)。

它还可以支持指定列:

first_name:John address:State

我有一些简单的代码来处理其中的一些案例,但它有点笨拙。我认为这个问题有一些预先存在的解决方案,但我很难找到它们。通常,问题是如何使用户能够使用单个输入字段轻松搜索结构化数据库。

2 个答案:

答案 0 :(得分:0)

Jquery UI自动完成功能可能就是您所需要的。 css以及它也是必要的,请参阅此链接http://api.jqueryui.com/autocomplete/了解所需的.js ans css。

$( "#myInputBoxId" ).autocomplete({
        source: "search.php",
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    }); 

并在search.php中

<?php
include 'config.php';
$results =array();
$req = "SELECT product_name "
    ."FROM table4 "
    ."WHERE product_name LIKE '%".$_REQUEST['term']."%' LIMIT 5"; 

$query = mysqli_query($con,$req);

while($row = mysqli_fetch_array($query))
{
     array_push($results,$row['product_name']);
}
echo json_encode($results);

}

答案 1 :(得分:0)

在这种情况下,您可以使用字符串操作将字符串分解为多个值,然后使用“或”条件搜索每列中的每个单词。 此外,您可以在列上定义索引,以实现更快的搜索。 您可能已经尝试过这种技术,但是您必须查找每列中的每个单词