0

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

例如,给定一个包含 , 列的数据库,first_name用户last_name可以address输入如下内容:

John State St

并且该库将构建一个查询,以便它返回与居住在 State St 上的名为 John 的人(或居住在 John St 上的名为 State 的人)相匹配的行。

它还可以支持诸如指定列之类的事情:

first_name:John address:State

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

4

2 回答 2

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);

}

于 2013-04-26T18:45:03.473 回答
0

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

于 2013-04-26T18:56:11.357 回答