【发布时间】:2017-02-06 15:19:22
【问题描述】:
我会尽量说清楚。
我目前正在为我的工作开发一个项目,使用动态表单,其中表单输入位于数据库中,并动态创建。每个输入行看起来像:
Question? Radiogroup Textinput
当用户在其中的 3-5 行中按下提交时,表单将被序列化并使用 AJAX 进行管理。所以这是我遇到问题的部分,到目前为止,在我的 AJAX 文件中,有一个 foreach 循环遍历所有 $_POST 值,将它们添加到数组中,然后在数组完成后插入所有数据到 SQL 数据库。而且我不知道这是否是一个问题,因为我不是专业的 DBA,但是有很多行被插入到数据库中,因为每个无线电组和每个文本输入都有自己的行。我在想,如果我至少可以把它减少到每个问题都有自己的行,但是我如何将单选组值与文本输入值合并,使它们在同一行但在不同的列上。
我希望我在这里说得足够清楚。 今天的数据库布局
|ID|RowID|Type|User|Value
其中 Type 是 Radio 或 Text。我想要实现以这种方式获得一半的行是:
|ID|RowID|Type|User|Radio|Text
问题是当我的 foreach 循环用很多行填充一个数组时,如何实现这一点,对于每个表单,正如我所说,它可能包含 3-5 行,同时包含一个单选组和一个文本输入。这就是我今天的做法:
foreach($_POST as $key => $value) {
$values[] = "'{$id}', '{$user}', '{$type}', '{$value}'";
}
$mysqli->query('INSERT INTO data (rowid, user, type, value) VALUES ('.implode('),(', $values).')');
希望有人能帮帮我。
最好的问候 思科
【问题讨论】:
-
No no no。在处理不受信任的数据时使用prepared statements。
-
我总是这样做,但是当这与手头的问题无关时,我为什么要在上面包含它..