在PHP中从列表框生成查询

在PHP中从列表框生成查询,php,html,Php,Html,我有一个页面,我希望允许用户从表中的选择,然后在屏幕上显示这些字段的内容。我已经像这样设置了选择 <select name="queryfields" size="12" multiple="multiple" tabindex="1"> <option value="firstname">firstname</option> <option value="lastname">lastname</option> <option v

我有一个页面,我希望允许用户从表中的
选择
,然后在屏幕上显示这些字段的内容。我已经像这样设置了
选择

<select name="queryfields" size="12" multiple="multiple" tabindex="1">
<option value="firstname">firstname</option>
<option value="lastname">lastname</option>
<option value="address">address</option>
<option value="phone">phone</option>
我不知道如何将数据从数组中获取到与我上面的代码片段类似的select语句中。

尝试以下操作:

$sql = '';
$selected_fields = array();   
foreach ($_GET['queryfields'] as $selectedOption){
    //echo $selectedOption."\n";
    $selected_fields[] = $selectedOption;
}
if(!empty($selected_fields)){
    $fields = implode(',', $selected_fields);
    $sql = 'SELECT '.$fields.' from employeedata'; 
}
//如果查询不为空,则打印查询

if(!empty($sql)){
    echo $sql;
}
您可以使用PHP内爆()函数

<?php
    header("Content-Type: text/plain");
    $q = "SELECT ".implode(', ', $_GET['queryfields'])." FROM employeedata";
?>

但是SQL注入也有一些可能性。在继续之前,您应该阅读有关此的详细信息

您可以创建如下所示的设计

<?php
    header("Content-Type: text/plain");
    $filter = array_filter($_GET['queryfields'], function($val) {
        $allowedFields = array(
            'firstname',
            'lastname',
            'address',
            'phone',        
        );
        return in_array($val, $allowedFields);
    }

    $q = "SELECT ".implode(', ', $filter)." FROM employeedata";
?>

这可以在没有重定向的同一页面上实现吗?这是php代码,如果你想访问这段代码,你必须使用Ajax。但是我现在不明白你的要求!!你按照我的要求工作。我没有意识到在同一个页面上使用单独的方法(AJAX)。我会用谷歌搜索ajax。你会把它放在与
选择
相同的页面上,还是放在我要使用的
$\u GET
<?php
    header("Content-Type: text/plain");
    $q = "SELECT ".implode(', ', $_GET['queryfields'])." FROM employeedata";
?>
<?php
    header("Content-Type: text/plain");
    $filter = array_filter($_GET['queryfields'], function($val) {
        $allowedFields = array(
            'firstname',
            'lastname',
            'address',
            'phone',        
        );
        return in_array($val, $allowedFields);
    }

    $q = "SELECT ".implode(', ', $filter)." FROM employeedata";
?>