2013-04-26 40 views
0

是否有預先存在的庫將用戶輸入並將其轉換爲SQL WHERE子句?用戶搜索SQL查詢Where Where子句

例如因爲有last_namefirst_name,數據庫和address用戶可以輸入類似:

John State St 

和圖書館將建立一個查詢,例如,它會返回匹配名爲傢伙,行生活在聖路易斯的約翰(或者一個名叫州的人,就此而言,他住在約翰街上)。

它也可以支持諸如指定列:

first_name:John address:State 

我有一些簡單的代碼來處理一些案件已經但是它不方便的,開始有點。我認爲這個問題有一些預先存在的解決方案,但我很難找到它們。一般來說,問題在於如何使用戶能夠使用單個輸入字段輕鬆搜索結構化數據庫。

+0

對於特定的編程語言? – 2013-04-26 18:45:50

+1

您可以嘗試[全文搜索](http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html)。 – 2013-04-26 18:52:55

回答

0

Jquery UI自動完成可能是你正在尋找的。隨着它的CSS也是必要的,請參閱此鏈接http://api.jqueryui.com/autocomplete/爲.js和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); 

}

+0

似乎只是將問題推到search.php中......它究竟做了什麼? – 2013-04-26 18:52:27

+0

請參閱上面的修改.. – user2015144 2013-04-27 12:23:38

0

在這個問題上,你可以使用字符串操作打破字符串作爲多值,然後利用搜索每個字中的每一列「或「條件。 此外,您可以在列上定義索引以實現更快的搜索。 您可能已經嘗試過這種技術,因爲您提到過,但是您必須查找每列中的每個單詞