我正在构建这个网站,我需要向数据库发送一些信息,但是,该网站必须能够一次插入多行。
如图所示,在左侧第一个“Grupo”列中,我有 4 个不同的数字,这些数字是 id,每个数字代表不同的产品。我需要做的就是通过一份申请将这四行插入到数据库中。
我最初的想法:使用 JavaScript 将信息存储为变量,并将它们作为隐藏类型输入的值,但如果我只有一行或者行数是事先固定的,它就会起作用,它是什么? t。
最佳答案
我一直在努力,终于得到了我想要的结果。事实上,这是一个非常简单的过程。
我所做的是将输入中的信息保存为矩阵,然后循环它并在每个循环后执行查询,就这么简单。
我提供了一些示例代码。它们与我随问题提供的表格不同,但原理是相同的。
我做的第一件事是设置输入名称的格式,如下所示。它使循环数组变得更容易。这部分的功劳属于这篇文章的第一个答案:Submitting a multidimensional array via POST with php
<tr>
<td><input name="info[0][top]" value="tr 1/ td 1" /></td>
<td><input name="info[0][bottom]" value="tr 1/ td 2" /></td>
</tr>
<br/>
<tr>
<td><input name="info[1][top]" value="tr 2/ td 1" /></td>
<td><input name="info[1][bottom]" value="tr 2/ td 2" /></td>
</tr>
<br/>
<tr>
<td><input name="info[2][top]" value="tr 3/ td 1" /></td>
<td><input name="info[2][bottom]" value="tr 3/ td 2" /></td>
</tr>
之后,我只是在执行查询之前循环来自表单的数据。
$query = "INSERT INTO tb_teste (teste_info1, teste_info2) VALUES (:teste_info1, :teste_info2)";
$stmt = $this->conexao->prepare($query);
$el = $this->teste->__get('teste_info1');
$i = 0;
foreach ( $el as $item ) {
$stmt->bindValue(':teste_info1', $this->teste->__get('teste_info1')[$i]['top']);
$stmt->bindValue(':teste_info2', $this->teste->__get('teste_info1')[$i]['bottom']);
$stmt->execute();
$i++;
}
关于动态行数的需求,我只需在 JavaScript 中为生成的每个 id 创建一个输入,并将“info”的索引分配给一个变量,该变量将根据需要递增。这将为我提供所需的一切。
关于javascript - 一次向 MySQL 表中插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676762/