2015-08-28 68 views
0

我想讓取數據的ajax請求在不同的表上執行連接操作取決於參數和表名。如何使用函數名稱和參數作爲變量調用適當的函數? PHP

$.ajax({ url: '/my/site', 
    data: {fun_name: 'join_user_and_state', 
      param: '12,1' 
     }, 
    type: 'post', 
    success: function(output) { 
        alert(output); 
       } 
}); 

在服務器端,行動之後的參數和功能的名稱應該是閱讀和相應的值應指向方法來調用,例如:

if(!empty($_POST['param']) && !empty($_POST['fun_name'])) { 
    $param= $_POST['param']; $fun_name= $_POST['fun_name']; 
// want to call proper function name with parametters from $fun_name and $param 
// parameters could be 2 or 3 or more its depends upon user choice 
// how to call 
} 

//definitions 
join_user_and_state($user_id,$state_id) 
{ 
    // will do join query here with 2 tables 
} 

join_user_and_city($user_id,$city_id) 
{ 
    // will do join query here with 2 tables 
} 

join_user_and_state_and_city($user_id,$state_id,$city_id) 
{ 
    // will do join query here with 3 tables 
} 

我如何可以調用相應的功能?

或有任何其他方式來達到同樣的,我必須執行不同的不同連接查詢取決於用戶選擇像USER_STATE,user_city,user_education,user_salary..etc(以及這些所有組合可能的)?和這些列存在於它們自己的表

回答

2

您可以使用call_user_func()

例子:

if(!empty($_POST['param']) && !empty($_POST['fun_name'])) { 
    $param= $_POST['param']; $fun_name= $_POST['fun_name']; 
    $returnval = call_user_func($fun_name, explode(",", $param)); 
    //handle return variable etc.... 
} 
+0

是這種做法將是快或使用的if else給我快的結果? –

+0

@amitgupta它很容易,因爲它只是一條線。如果你後來添加更多的函數,這將是更好的方法,因爲如果你有更多的函數,你需要越來越多的if語句。 – Gogolex

+0

好的,謝謝,這是一個很好的方法來處理差異連接操作意味着每個連接的不同功能,或者我應該只做一個查詢,並通過同一個查詢所有變量?請參閱我的問題的最後3 4行。 –

相關問題