如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?
Posted
技术标签:
【中文标题】如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?【英文标题】:How to Insert unknown amount of HTML form fields into MySQL via PHP? 【发布时间】:2019-05-21 02:09:09 【问题描述】:我有一个功能性的 html 表单,我正在通过 php 将它的内容插入 SQL 数据库。我需要找到一种方法,只需单击即可插入多行(客户将根据需要动态添加更多表单字段)。
这是 HTML 字段(表单的一部分):
<label for="code">Súťažný kód</label>
<input type="text" name="code" id="code">
然后我使用 jQuery 将字段值传递给外部 .php 文件:
jQuery.ajax(
url:"insert.php",
method:"POST",
data:form_data,
success:function(data)
console.log(data);
);
在 insert.php 中,我连接到我的 mysql 数据库,并得到如下形式的值:
$code = $_REQUEST['code'];
然后,我能够运行必要的 SQL 查询来插入行,以及所有必要的值(包括“代码”)。
此表格将用作比赛的提交表格。在“代码”表单字段旁边会有一个加号图标(或类似的东西),通过单击该图标,将出现另一个代码字段。用户最多可以向 20 个不同的字段添加 20 个代码。
我的问题是,如何将所有表单(或所有代码)传递给 .php 文件,并将它们作为单独的行插入到我的 MySQL 数据库中?
示例:
用户发送一个插入了 3 个代码的表单。生成的表单如下所示:
[firstName]
[lastName]
[code]
[code]
[code]
发送表单后,这三行应该添加到数据库中:
# | firstName | lastName | code
----------------------------------
1 | John | Doe | 12345
2 | John | Doe | ABCDE
3 | John | Doe | 55555
【问题讨论】:
【参考方案1】:将字段更改为数组,例如:
<input type="text" name="code[]" id="code1">
<input type="text" name="code[]" id="code2">
然后你可以在 PHP 中访问它:
foreach ($_REQUEST['code'] as $key => $val)
sql_insert_function($_REQUEST['firstName'], $_REQUEST['lastName'], $val);
作为一般建议,请记住验证并转义您要插入数据库的所有数据。
【讨论】:
从表单的角度来看,这是正确的方法。但是mysql_insert()
是什么?
想象一下它是用于插入 sql 的任何函数的伪代码。将在名称中澄清这一点。
这很有帮助,我不知道字段可以是数组。是的,我正在使用准备好的语句和其他一些安全方法。以上是关于如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章