是否有预先存在的库会接受用户输入并将其转换为SQL WHERE
子句?
例如,如果数据库包含first_name
,last_name
和address
列,则用户可以输入以下内容:
John State St
并且库将构建一个查询,以便返回与生活在State St上的名为John的人匹配的行(或者就此而言,生活在John St上的名为State的人)。
它还可以支持指定列:
first_name:John address:State
我有一些简单的代码来处理其中的一些案例,但它有点笨拙。我认为这个问题有一些预先存在的解决方案,但我很难找到它们。通常,问题是如何使用户能够使用单个输入字段轻松搜索结构化数据库。
答案 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)
在这种情况下,您可以使用字符串操作将字符串分解为多个值,然后使用“或”条件搜索每列中的每个单词。 此外,您可以在列上定义索引,以实现更快的搜索。 您可能已经尝试过这种技术,但是您必须查找每列中的每个单词