我已經能夠使用選擇框構建一個mySQL查詢。像ajax一樣從PHP開始。從動態選擇框構造mySQL查詢
HTML/JS(相關部分)
var call = true;
switch(parseInt($(this).val())) {
case 1:
cat_code ="ager";
sortv = "database_percent";
sorto = "asc";
break;
case 2:
cat_code ="ager";
sortv = "database_percent";
sorto = "desc";
break;
default:
cat_code ="ager";
sortv = "value";
sorto = "asc";
break;
}
if(call) {
$.ajax({
url: 'all_get_2.php',
type: 'GET',
dataType: 'JSON',
data: {cat_code: cat_code, sortvalue: sortv ,sortorder:sorto},
success: function(data) {
//stuff
}
})
PHP(相關部分...只是一個例子)
$whereCategory = isset($_GET['cat_code'])? "{$_GET['cat_code']}" : '';
$sortvalue = isset($_GET['sortvalue'])? "{$_GET['sortvalue']}" : '';
$sortorder = isset($_GET['sortorder'])? "{$_GET['sortorder']}" : '';
$sql = "select count(guid) from full_db2 where '{$whereCategory}' = '{$sortvalue}'' and example = '{$sortorder};";
$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
header('Content-type: application/json');
echo json_encode($result);
一切正常。我在這個插圖中混合了一些變量,但這不是問題。這將返回用戶從選擇中選擇的屬性的計數。這些選擇是根據用戶在上一次選擇中選擇的內容動態生成的。
如果我希望用戶能夠選擇更多屬性以添加到查詢中,該怎麼辦?因此,例如,與年齡超過40歲的數據庫(用戶)中的條目數量相比,他們可以像年齡超過40歲且結婚生子的用戶那樣增加更多內容。
我基本上考慮添加一個選項來添加另一組選擇框(例如,單擊一個「+」和出現的新集),但我很快意識到我無法弄清楚有多少選擇出來那裏和創建查詢的邏輯方法。
什麼是最好的方式允許用戶選擇(理論上)無限數量的屬性來構建一個單一的mySQL查詢?
旁註。你有沒有聽說過['SQL Injenction'](http://php.net/manual/en/security.database.sql-injection.php)? –
@ PM77-1不幸的是,當時正在閱讀它們。我對PHP是全新的,所以我還沒有弄清楚如何更新(例如)上面的代碼來防止這種情況。任何建議,將不勝感激。 – jonmrich
你不知道有多少元素......首先想到的是'array'。您可以使用'name =「複選框[]」'爲每個複選框指定相同的名稱。這樣你發送一個包含值的列表到服務器,然後使用PHP獲取所需的值。在PHP中,你可以使用'$ data = $ _GET ['field_name'];'獲得一個包含這些值的數組。 –