【问题标题】:looping through variable post vars and adding them to the database循环通过变量 post vars 并将它们添加到数据库中
【发布时间】:2011-02-06 11:58:18
【问题描述】:

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

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

对于 E.G

表格一可以在输入标签中包含 6 个字段,所有字段都具有不同的名称属性。 表格二可以包含 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())");

} 

【问题讨论】:

  • 我正在查看您使用的那个正则表达式,但我不确定它是否能满足您的要求。如果字符串以它开头,它将删除 [,删除所有数字或仅删除 ::]。对吗?

标签: php mysql forms


【解决方案1】:

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

$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.")";

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

【讨论】:

  • 看起来不错,但是我忘了提到每个帖子的值只会进入目标表中的一个字段。我将如何将其纳入您所说的内容中:)
  • 所以你想把整个表单放到一个字段中?像逗号分隔的值?
  • 基本上,我有自己的格式而不是 csv,但通过表单提交的所有信息都将进入表 forms_form_dataentry
  • 能否给我看一下你正在使用的代码或者一个函数以及它需要什么参数,以便我可以将它集成到上面的示例中?
  • 我还没有任何处理表单数据的函数。这就是问题所在。我不确定你的要求。
【解决方案2】:

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

$value=serialize($_POST);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2018-11-08
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多