【问题标题】:Dynamic lead capture script动态潜在客户捕获脚本
【发布时间】:2012-01-22 22:45:25
【问题描述】:

我正在创建一个动态的潜在客户捕获脚本。

表单传递表名,以及其余的发布数据。

我正在寻找一种在不知道输入名称的情况下收集所有帖子输入并将其插入 MySQL 表的方法,因为每个“引导”脚本都不同并且包含不同的字段。

该表已经创建并包含输入所需的所有列。

有什么好主意吗? 干杯!

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    一个快速的解决方案是序列化一组经过验证的帖子数据。这会将其转换为字符串以存储在您的数据库中。

    您可以反序列化该字符串以将其转换回可管理的数组。

    http://php.net/manual/en/function.serialize.php

    最大的缺点是没有完整的 SQL 支持,否则将数据放入单独的数据库字段。

    我会结合使用这两种技术,将姓名、电子邮件等一致的数据放入各自的字段,将未知数据放入另一个字段。

    --

    尝试索引识别(如果您不知道具体名称):

    $data = array_values($_POST);
    
    $name = $data[0];
    $email = $data[1];
    $etc = $data[2];
    

    --

    从数据生成 SQL 字符串。请记住对验证保持警惕,理想情况下您应该使用 Mysqli 绑定参数来正确构建您的查询字符串。

    foreach($_POST as $input_name => $input_value){
        //do validation here
    
        //match columns here
        if($input_name=='name') $cleaned[$input_name] = $input_value;
    }
    
    $values_csv = '"'.implode('","',$cleaned).'"';
    
    $sql  = "INSERT INTO table_name VALUES ($values_csv);";
    

    【讨论】:

    • 我同意,这个缺点是我的问题,因为表已经用分隔字段构建,因此我需要找到一种方法将数据插入到字段中(基本上输入名称是相同的作为 mysql 字段名)。
    • 如果您不知道输入名称,则无法知道数据来自哪些字段。您可以测试每个输入的数据可能是什么,或者通过其索引识别输入的数据 - $_POST 数组中的位置。指数是否一致?
    • 我现在要做的就是这样:我正在使用 array_keys($_POST); 收集所有输入。然后我必须找到一种方法在 sql 查询中设置它们: INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) - 现在我不知道如何在不循环的情况下设置列和值数据。
    • 循环是您构建自己的字符串查询字符串的唯一选择。使用 array_values/array_keys 的组合来获得你需要的东西。请注意,您应该验证所有数据 - 键和值。如果您的键与列名不匹配,您的查询将出错。
    • 不确定如何循环,毕竟我需要对所有列及其数据执行 1 个 MySQL 查询(相同顺序)。
    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多