通过php表单向mysql数据库添加多个条目

时间:2016-11-14 18:12:19

标签: php mysql web-applications phpmyadmin

我正在创建一个数据库系统来存放和检索零售商/公司的发票。我正在寻找一种通过php表单向mysql数据库添加多个条目的方法,而无需单独添加每个项目。我的表格看起来像;

<div class="new_invoice">
<form action="addCustomerInvoice.php" method = "post" enctype= "multipart/form-data">
<fieldset>
<legend> Add new invoice for <?php echo $rsCustomer['forename']; echo ' '; echo $rsCustomer['surname']; ?></legend>
<h4>Invoice Number:</h4>
<input type="text" name="invoice_no">
<h4>Item Quantity:</h4>
<input type="text" name="quantity">
<h4>Item Name:</h4>
<input type="text" name="item_name">
<h4>Item Category:</h4>
<input type="text" name="item_category">
<h4>Manufacturer:</h4>
<input type="text" name="item_manufacturer">
<h4>Item Description:</h4>
<input type="text" name="item_description">
<h4>Item Price:</h4>
<input type="text" name="item_price">
<h4>Item Information:</h4>
<input type="text" name="item_info">
<input type="submit" value="Add new record">
</fieldset>
</form>
</div>

和过程一样;

<?php
                            include 'database_conn.php';
                                $InvoiceNumber = $_POST['invoice_no']; 
                                $Quantity = $_POST['quantity']; 
                                $ItemName = $_POST['item_name']; 
                                $ItemCat = $_POST['item_category'];
                                $ItemMan = $_POST['item_manufacturer']; 
                                $ItemDesc = $_POST['item_description'];
                                $ItemInfo = $_POST['item_info'];
                             $sql = "INSERT INTO hlinvoicetable (invoice_no, quantity, item_name, item_category, item_manufacturer, item_description, item_info) VALUES ('$InvoiceNo', '$Quantity', '$ItemName', '$ItemCat', '$ItemMan', '$ItemDesc', '$ItemInfo')";
                              $queryresult = mysqli_query($conn,$sql) or die(mysqli_error());
                            echo "New invoice added. 

                            mysqli_close($conn);
                            ?>

我想知道有没有办法重复表单并让它为数据库添加一个新条目,除非字段留空并因此被忽略并且没有添加任何行?也可以添加所有项目保持相同的主键(invoice_no)?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要在输入中使用数组名称。例如:

<input type="text" name="invoice_no[]">
...
<input type="text" name="invoice_no[]">

然后在PHP中,您将获得$_POST['invoice_no'][0]$_POST['invoice_no'][1]等的值。

您可以遍历这些值,例如:

foreach ($_POST['invoice_no'] as $key => $invoice) {
    if (!empty($_POST['invoice_no'][$key])
        && !empty($_POST['quantity'][$key])
        && !empty($_POST['item_name'][$key])
        //... include all fields that can't be left empty
    ) {
        // Do insert
    }
}

另外,如上所述,请确保使用绑定参数,而不是将用户提供的数据直接放入SQL查询中。它实际上没有多少额外的代码,并且有必要使您免于SQL注入攻击。