Php 在发布到SQL db时,如何将此表单的所有值作为数组提交并循环?

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"> <

我有一个表格,里面有一些文本输入,我想在填写完后提交给db。我是PHP新手,所以我不知道如何将所有值保存到数组中并提交

这是我用表格包装的桌子:

<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.
    //
}