php - 使用php将while循环中的数据插入到表中

标签 php html mysql while-loop

我正在使用 HTML 和 PHP 创建一个表单。我创建了一个表单,我想提交该表单并将该数据保存在数据库中。

我正在尝试提交一个包含来自 while 循环的数据的表单。所有输入值均由 while 循环生成。

代码如下所示。

<table width="1348" border="0" class="table table-striped" >
        <tr>
          <td width="106">&nbsp;</td>

          <td width="332"><strong>Product Code</strong></td>
          <td width="375"><strong>Product Name</strong></td>
          <td width="211"><strong>QTY</strong></td>


      </tr>
                <?php
    $i = 0;
    $rowset = mysql_query("select * from product_detail where productID='".$data['productCode']."'");
    while($stuff = mysql_fetch_array($rowset)){
    ?>
    <tr>

        <td><input type="text" name="code[<?php echo $i?>]" value="<?php enter code hereecho $stuff['code'];?>"/></td>
        <td><input type="text" name="name[<?php echo $i?>]" value="<?php echo $stuff['name'];?>" size="50"/></td>
        <td><input type="text" name="qty[<?php echo $i?>]"  value="<?php echo $stuff['qty'];?>" size="10"/></td>

    </tr>
    <?php $i++; }?>
    <tr id="last">
</table>
<input type="submit" name="save id="save" class="btn btn-primary btn-lg"/>

这是将数据添加到数据库的代码。

$code=$_POST['code'.$i];
$name=$_POST['name'.$i];
$qty=$_POST['qty'.$i];
$query = mysqli_query($con,"insert into stock(productCode, productName, qty) values ('".$code."', '".$name."','".$qty."')") or die(mysqli_error($con));

最佳答案

首先,使用准备好的语句 bind_param因为你的脚本完全暴露于 SQL 注入(inject)。

其次,可以添加隐藏行数的输入类型

<form action="" method="POST">
    <table width="1348" border="0" class="table table-striped" >
                <tr>
                        <td width="106">&nbsp;</td>
                        <td width="332"><strong>Product Code</strong></td>
                        <td width="375"><strong>Product Name</strong></td>
                        <td width="211"><strong>QTY</strong></td>
                </tr>
<?php
    $data['productCode'] = "1"; // sample data
    $stmt = $con->prepare("SELECT * FROM product_detail WHERE productID = ?");
    $stmt->bind_param("i", $data['productCode']);
    $stmt->execute();
    $result = $stmt->get_result();
    $i = 0;
    while($stuff = $result->fetch_assoc()) {
?>
            <tr>
                    <td></td>
                    <td><input type="text" name="code[<?php echo $i; ?>]" value="<?php echo $stuff['code'];?>"/></td>
                    <td><input type="text" name="name[<?php echo $i; ?>]" value="<?php echo $stuff['name']; ?>" size="50" /></td>
                    <td><input type="text" name="qty[<?php echo $i; ?>]"  value="<?php echo $stuff['qty']; ?>" size="10" /></td>

            </tr>
<?php
        $i++;
    }
?>
                    <input type="hidden" name="count" value="<?php echo $i; ?>" />
            <tr id="last">
    </table>
<input type="submit" name="save" id="save" class="btn btn-primary btn-lg"/>
</form>

使用表单进行帖子计数

<?php
if (isset($_POST['save'])) {
    $count = $_POST['count'];
    for ($i = 0; $i < $count; $i++) {
        $code = $_POST['code'][$i]; // check empty and check if interger
        $name = $_POST['name'][$i]; // check empty and strip tags
        $qty = $_POST['qty'][$i]; // check empty and check if interger

        $stmt = $con->prepare("INSERT INTO stock (productCode, productName, qty) VALUES (?, ?, ?)");
        $stmt->bind_param("iss",$code,$name,$qty);
        $stmt->execute();
    }
}
?>

您可能还想在插入之前通过其他必要的验证来检查帖子值是否为空

关于php - 使用php将while循环中的数据插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005043/

相关文章:

mysql - 如何在查询中使用OR优先?

mysql - 使用多个连接 sql 查找多个计数

php - 2006 : MySQL server has gone away

javascript - jquery中如何提取多维数组?

PHP 转换变音符号,例如 "ue"到 "ü"

html - 如何限制 href 的文本长度限制

javascript - 如何根据文本长度使表格 td tr 自动宽度?

php - Yii2 REST API 不返回预期结果

javascript - jAlert 可以指向任何链接吗?

php - Magento 产品平面数据和目录搜索索引问题