循环遍历变量post vars并将它们添加到数据库中

时间:2010-04-10 13:30:10

标签: php mysql forms

我的任务是设计一个具有mysql后端的自定义表单管理器。

我在设置所有前端后遇到的问题是如何处理动态表单。

对于E.G

表单1可以包含6个字段,所有字段在输入标记中都具有不同的名称属性。 表单2可以包含20个字段,所有字段在输入标记中都具有不同的名称属性。

如何在不耗尽大量资源的情况下处理表单。

最终答案

基于Arda Xi的接受答案

function processForm($form_id) {

    $rows = "";
    $values = "";

    foreach($_POST as $key => $value) {

        $rows = mysql_real_escape_string($key);
        $values = mysql_real_escape_string($value);
        $entry .= "[".$rows . "::".$values."]";

    }
    // clean up the array


    $entry = preg_replace('/^\[|\d+|\:\:\]/', '', $entry);

    $query = mysql_query("INSERT INTO `forms_form_data` (`id`, `form_id`, `entry`, `manager_id`, `status`, `created_at`) VALUES (NULL, '".$form_id."', '".$entry."', '".$_SESSION['manager_id']."', '0', NOW())");

} 

2 个答案:

答案 0 :(得分:3)

从字面上看,唯一的方法是使用循环。如果您想尽可能少地使用资源,可以将它们连接起来。

$columns = "";
$values = "";
foreach($_POST as $key => $value) {
    $columns .= "`" . mysql_real_escape_string($key) . "`, ";
    $values .= "`" . mysql_real_escape_string($value) . "`, ";
}
$columns = substr($columns, 0, -2);
$values = substr($values, 0, -2);
$query = "INSERT INTO `table` (".$colums.") VALUES (".$values.")";

这将为表单中的所有值创建一个查询。

答案 1 :(得分:1)

为什么不按原样存储$ _POST的序列化值?当然逃避它以使其数据库安全。像:

$value=serialize($_POST);