2014-02-25 54 views
0

我有一個包含多個表的數據庫。我也有一個連接到它的基於Web的應用程序。現在我正在使用準備好的查詢。用多個列和表創建一個查詢變量

我想創建一個通用查詢,它能夠從不同的表中獲取可變數量的輸入列。 (基本上用戶檢查創建php變量的框,我需要傳遞給查詢)。

如果我知道會有讓說,2列需要,它很容易,我只需要做這樣的事情,

SELECT $col1, $col2 FROM $table1 INNER JOIN $table2; 

我怎樣才能改變這種狀況,使任何數量的變量可以在輸入查詢?

由於提前,

Zohm

編輯:我想我可能會做在PHP中的if/else條件或開關和各種情況下將對應於多個輸入列,每個個案會有它的查詢。但是這會做很多事情(例如,用戶可以點擊10個盒子),而且看起來並不正確。而且在未來,如果我需要更多的案例,我將不得不更改代碼,我寧願不必這樣做。

+0

*基本上用戶切創建php變量的cks框... *這是什麼意思?這些變量如何與您現有的表格列相關聯? –

+0

用戶有一組他可以點擊的框。每個框都以2個變量名稱鏈接到它,一個列名和一個表名(數據庫中的名稱)。所以如果一個盒子被選中,這2個變量必須發送到查詢。那有意義嗎? – Zohm

+0

爲什麼單個列上有2個變量? –

回答

0

我假設你的表單元素名稱是你正在尋找的表字段。如果是這種情況,你可以通過帖子來建立你的字段表。林不知道你是如何設定的變量有2個值...

$_POST['field1'] = "true"; 
$_POST['field2'] = "true"; 
$_POST['field3'] = "false"; 
$_POST['field4'] = "true"; 

$fields = ""; 
foreach ($_POST as $key => $value) 
{ 
     $fields .= $key . ","; 
} 

這將結束與

$fields = "field1,field2,field4,"; 

現在你必須刪除最後一個逗號,

$fields = substr($fields,0,-1); 

那麼你可以:

$query = "SELECT " . $fields . " from table1...and so on. 
+0

未經檢查的項目不會轉到服務器。所以'$ value ==「true」'比較沒有任何意義。 –

+0

不錯,趕上,編輯... – bart2puck

+0

感謝您的答案。我想我可以用這個工作。如果我創建一個動態數組,在其中我放置一個變量,當它的框被選中時,我可以通過它循環並做你的串聯解決方案。 (至少似乎可能!)。這將避免$ _POST ['field1']到可能很大的字段n。如果我無法做到,我仍然可以回到您的解決方案。 – Zohm

相關問題