如何将表单构建器中的数据存储在数据库中


How to store data from form builder in database

我正在尝试创建一个表单构建器,使用户能够生成调查表单/页面。

生成表单后,表单属性将存储在表中。

问题1:我可以在哪里存储表单属性,完全知道用户可能在表单中添加的字段数是未知的。

问题2:例如,当某人完成调查表单时,我将在哪里以及如何存储通过生成的表单提交的数据。

我应该为每个表单属性动态创建新表吗?如果是,如果创建了超过一百万个形式,这意味着一百万个表,该怎么办。

这就是多租户发挥作用的地方吗?

请根据最佳实践提供答案。

我想我明白你的要求,但为什么不创建一个包含 100 列的表,标记为 1-100。设置用户可以创建的字段数量限制(限制 100)。然后,发布字段并添加 sql 查询来存储值...?

注释答案如果用户已经登录填写此表单,我将亲自在同一页面上执行 POST 请求。

<?php if (isset($_POST['field1'])){
    $valueforField1 = $_POST['field1'];
    $valueforField2 = $_POST['field2'];
    $valueforField3 = $_POST['field3'];
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "INSERT INTO Survey (field1, field2, field3) // I guess you would `have to add 100 fields here to accommodate the fields in your DB Also, you can set a default value in MySQL that way if field 56-100 is not set it has a value like 0 or add the value in this php file` 
    VALUES ('$valueforField1', '$valueforField2', '$valueforField3')";
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    $conn->close(); ?>

注释答案,或者,如果要等待用户登录,可以将所有值存储在SESSION变量中。

<?php
session_start();
if (isset($_POST['field1'];)){
if (!(isset($_SESSION['email']))){
$_SESSION['field1'] = $_POST['field1'];
// You would have to do 100 of these
}
}
?>