SQL/php代码的示例,第二个查询是适用的。我创建了一个用户输入,将 id 变量提交到 MySQL 数据库中。这些用户输入在表单中多次克隆,因此导致多个重复的 id/名称,但是每个克隆的一列(我们称之为第 1 列(是不同的。
现在,一旦添加了输入并提交了表单,它只会将最后一个表单条目附加到数据库表中,这是我所期望的。
有没有办法将所有这些副本添加到表中,也许基于第 1 列的差异?我在想这样的事情:对于每个第 1 列插入数据库1 ...
编辑
一些代码:
.HTML:
<style>
.hidden {
display: none;
}
</style>
<body>
<div id="samplesinfo" class="samplesinfo hidden">
<input type="text" id="column1" name="column1" value="1" readonly>
<input type="text" name="column2">
</div>
<button id="btn">Paste</button>
<div>
<h3>Paste Below</h3>
</div>
<form>
<div id="paste">
</div>
<button type="submit" name="submit">Submit</button>
</form>
j查询:
$(document).ready(function() {
var sample = 1;
$("#btn").click(function() {
var element = $(".samplesinfo.hidden").clone(true);
element.removeClass("hidden").appendTo("#paste:last");
sample++;
$("#column1").val(sample)
});
});
和 php:
if (isset($_POST['submit'])) {
$column1 = mysqli_real_escape_string($conn, $_POST['column1']);
$column2 = mysqli_real_escape_string($conn, $_POST['column2']);
$query = "INSERT INTO db1 ('column1', 'column2')
VALUES ('$column1', '$column2');";
mysqli_query($conn, $query);
header("Location: ../web_page/analysis_page.php?add_order=success");
}
只有新输入被发送到后端是因为原始#column1
和#column2
在<form>
之外。如果要发送所有内容,请将其放入<form>
.
接下来,如果要将所有内容插入数据库,并在现有记录发生更改时同时更新现有记录,则可能需要阅读此内容。
如果要添加同一对象的多条记录,则必须将它们作为相同类型的记录发送到后端,然后将它们视为数组。
<form>
<input name="column1[0][name]" value="first one">
<input name="column1[1][name]" value="second one">
<input name="column1[2][name]" value="third one">
</form>
提交此示例将获得 3 个具有名称和关联值的 column1 数组条目。
// example value of received data
$_POST = [
'column1' => [
0 => [
'name' => 'first one',
],
1 => [
'name' => 'second one',
],
2 => [
'name' => 'third one',
],
],
];
若要将所有内容转储到数据库中,请在foreach()
循环中使用查询。如:
foreach ($_POST['column1'] as $column) {
$query = "INSERT INTO db1 ('column1') VALUES (" . $column['name'] . ");";
}
显然,您必须在此处"n"为您的用例更新它,并且不要忘记清理这些数据。
我用类替换了id,并在输入字段名称中添加了一个[],因此$_POST['column1']
和$_POST['column2']
是数组。
.HTML:
<style>
.hidden {
display: none;
}
</style>
<body>
<div id="samplesinfo" class="samplesinfo hidden">
<input type="text" class="column1" name="column1[]" value="1" readonly>
<input type="text" class="column2" name="column2[]">
</div>
<button class="btn">Paste</button>
<div>
<h3>Paste Below</h3>
</div>
<form>
<div class="paste">
</div>
<button type="submit" name="submit">Submit</button>
</form>
Javascript:
$(document).ready(function() {
var sample = 1;
$(".btn").click(function() {
sample++;
$(".samplesinfo.hidden").find(".column1").val(sample);
var element = $(".samplesinfo.hidden").clone(true);
element.removeClass("hidden").appendTo(".paste:last");
});
});
.PHP:
if (isset($_POST['submit'])) {
$n = count($_POST['column1']);
for($i = 0; $i<$n; ++$i) {
$column1 = mysqli_real_escape_string($conn, $_POST['column1'][$i]);
$column2 = mysqli_real_escape_string($conn, $_POST['column2'][$i]);
$query = "INSERT INTO db1 (column1, column2)
VALUES ('$column1', '$column2');";
mysqli_query($conn, $query);
}
header("Location: ../web_page/analysis_page.php?add_order=success");
}