2017-05-18 60 views
1

我想在我的php頁面上構建一個多選擇,用戶可以選擇從數據庫中查詢哪些字段。我有多選設置,我試圖爲查詢構建部分使用「幕後」語法,但是當我點擊我的echo語句時,它不顯示選擇的內容。解析PHP數組構建查詢字符串

根據從頁面上的多重選擇中選擇的內容構建查詢字符串的正確方法是什麼? (現在准予我省略了有效的連接字符串等)

<html> 
<select name="employee_data[]" multiple style="min-width: 200px;" id="user_data"> 
<option value="EmployeeName">Employee Name</option> 
<option value="TeamName">Team Name</option> 
<option value="ManagerName">Manager Name</option> 
<option value="Department">Department</option> 
<option value="Recruiter">Recruiter</option> 
<option value="RecruitingAgency">RecrutingAgency</option> 
</select> 
</html> 
<?php 
    $query = "Select employeename "; 
    if (in_array('TeamName')) $query .= ",teamname" 
    if (in_array('ManagerName')) $query .= ",ManagerName" 
    if (in_array('Department')) $query .= ",Department" 
    if (in_array('Recruiter')) $query .= ",Recruiter" 
    if (in_array('RecruitingAgency')) $query .= ",RecruitingAgency" 
    $query .= " FROM employeepersonelinfo where employeename = '$employeename'"; 

echo $query; 
?> 
+0

其餘的代碼/表單在哪裏? –

+0

@PedroLobito - 我還需要展示什麼?正在試圖保持它像指導方針所示的那樣。 –

+0

爲什麼不把它們放在一個數組中,然後相對於','內爆()它? –

回答

0

以下是可用的PHP代碼。而不是檢查每個,你可以使用implode()

<?php 
if (!isset($_POST['employee_data'])) die(); 
$query = "Select employeename "; 
$query .= implode(', ', $_POST['employee_data']); 
$query .= " FROM employeepersonelinfo where employeename = '" . 
$_POST['employeename'] . "'"; 
echo $query; 
?> 

您並不需要檢查每個值。您可以使用數組函數保存代碼行和條件行。

+0

「value =」Department「中的值應該是查詢中的字段,是否正確? –

+0

是的,數據庫表字段名稱,應該是你的這些代碼的值保持不變,你不需要在代碼中做任何修改 –

+0

我以爲它們是一樣的,但是我意識到我有一個'_',這就是爲什麼我的語法錯誤。再次感謝! –