Php 在发布到SQL db时,如何将此表单的所有值作为数组提交并循环?
我有一个表格,里面有一些文本输入,我想在填写完后提交给db。我是PHP新手,所以我不知道如何将所有值保存到数组中并提交 这是我用表格包装的桌子:Php 在发布到SQL db时,如何将此表单的所有值作为数组提交并循环?,php,html,jquery,html-table,form-submit,Php,Html,Jquery,Html Table,Form Submit,我有一个表格,里面有一些文本输入,我想在填写完后提交给db。我是PHP新手,所以我不知道如何将所有值保存到数组中并提交 这是我用表格包装的桌子: <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post"> </br> <form action="" method="post"> <
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
</br>
<form action="" method="post">
<div id="wrapper">
<button type="submit" class="btn" name="add_device">Add devices</button>
</div>
</br>
<table id="ble_table" class="table table-bordered table-striped" cellspacing="0" width="100%">
<tr>
<th>No.</th>
<th>Serial no.</th>
<th>IMEI</th>
</tr>
<tr>
<td>1</td>
<td><input type="text" placeholder="Serial no." class="inputs" name="serial_no" id="serial_no" /></td>
<td><input type="text" placeholder="IMEI" class="inputs lst" name="imei" id="imei" /></td>
</tr>
</table>
</form>
</form>
我是这样循环的:
$myArray = $_POST;
foreach ($myArray as $index) {
print_r($index);
}
编辑
准备好的声明:
$serial_no = e($_POST['serial_no']);
$imei = e($_POST['imei']);
$entrycount = count($serial_no);
$sales_date = date("'Y-m-d H:i:s'");
$cus_id = "1";
$stmt = $db->prepare("INSERT INTO devices (serial_imei,serial_no,type_id,cus_id,sales_date) VALUES (?,?,?,?,?)");
for ($loop = 1; $loop <= $entrycount; $loop++) {
$stmt->execute([$imei[$entrycount]], [$serial_no[$entrycount]], 1, $cus_id, $sales_date);
}
$pdo->commit();
$serial_no=e($_POST['serial_no']);
$imei=e($_POST['imei']);
$entrycount=计数($serial\U no);
$sales_date=日期(“Y-m-d H:i:s”);
$cus_id=“1”;
$stmt=$db->prepare(“插入设备(序列号、序列号、类型号、客户号、销售日期)值(?,,,,?)”;
对于($loop=1;$loop execute([$imei[$entrycount]],[$serial\u no[$entrycount]],1,$cus\u id,$sales\u date);
}
$pdo->commit();
您的表单将发布两个数组,其中包含表单中serial
和imei
的值。在验证它们的条目数相同后,您只需循环其中一个,即可从两个数组中提取值并将其插入数据库
由于您的问题没有包括任何与数据库连接相关的内容,因此我只能向您展示将用于将数据插入数据库的变量。使用PDO并在进入循环之前准备插入(以使您能够使用PDO并准备)
$serial\u no=$\u POST['serial\u no'];
$imei=$_POST['imei'];
$entrycount=计数($serial\U no);
对于($loop=1;$loop不在字段上使用id
,只使用name
。将[]
添加到名称中,使其看起来像序列号[]
。添加这样的新输入字段,当提交表单时,您将获得一个输入值数组。请回答您的问题,并包括您用于处理表单的代码。该格式确实有效。请相信我:)这是您的提交按钮。执行打印($\u POST)
您将看到表单发布的所有数据。如果您仍然没有看到任何内容,只需在If语句之外进行打印即可。如果需要,则将required
添加到输入语句中,以便在未完成它们的情况下无法提交表单。在PHP中,只需检查数组和数组的count
如果它们不匹配,您就没有所需的一切。从外观上看,您没有将所有name
实例更改为name[]
。名称后不应再出现数字。无论如何,您似乎在正确的轨道上。如果两个数组的计数是相同的,则通过其中一个循环,并从两个数组中提取值以插入到数据库表中。谢谢!如何获得计数($serial)
因为我尝试了$serials=$\u POST['serial\u no']
但是我什么也得不到。对不起,我没有展示如何将POST数组提取到变量中。我已经在我的问题中添加了prepared语句,你认为它设置正确吗?没有成功:(哦FWIW你在问题中发布的原始表单有2个
$myArray = $_POST;
foreach ($myArray as $index) {
print_r($index);
}
$serial_no = e($_POST['serial_no']);
$imei = e($_POST['imei']);
$entrycount = count($serial_no);
$sales_date = date("'Y-m-d H:i:s'");
$cus_id = "1";
$stmt = $db->prepare("INSERT INTO devices (serial_imei,serial_no,type_id,cus_id,sales_date) VALUES (?,?,?,?,?)");
for ($loop = 1; $loop <= $entrycount; $loop++) {
$stmt->execute([$imei[$entrycount]], [$serial_no[$entrycount]], 1, $cus_id, $sales_date);
}
$pdo->commit();
$serial_no = $_POST['serial_no'];
$imei = $_POST['imei'];
$entrycount = count($serial_no);
for ($loop = 1;$loop <= $entrycount; $loop++) {
//
// The values from your form will be in the following variables:
//
//
// $serial_no[$entrycount]
// $imei[$entrycount]
//
// The variables shown above are what you will have to insert into your DB.
//
}