douqun1977 2016-01-12 16:41
浏览 12
已采纳

根据提供的数量将多个相同的行插入mysql DB

I want to N identical rows to MySQL DB based on quantity from web-form At the moment the insert script only adds one row at a time ("1" is a default value for this quantity input)

Here is this script:

<?php 
require 'connect.php';

// define variables and set to empty values
$cosmInOut_name = $cosmInOut_dateIn = $cosmInOut_expire = $cosmInOut_priceIn = $cosmInOut_4sale = $cosmInOut_dateOut = $cosmInOut_qtyOut = $cosmInOut_priceOut = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $cosmInOut_name = test_input($_POST["cosmInOut_name"]);
  $cosmInOut_dateIn = test_input($_POST["cosmInOut_dateIn"]);
  $cosmInOut_qtyIn = test_input($_POST["cosmInOut_qtyIn"]);
  $cosmInOut_expire = test_input($_POST["cosmInOut_expire"]);
  $cosmInOut_priceIn = test_input($_POST["cosmInOut_priceIn"]);
  $cosmInOut_4sale = test_input($_POST["cosmInOut_4sale"]);
  $cosmInOut_dateOut = test_input($_POST["cosmInOut_dateOut"]);
  $cosmInOut_qtyOut = test_input($_POST["cosmInOut_qtyOut"]);
  $cosmInOut_priceOut = test_input($_POST["cosmInOut_priceOut"]);
 }

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

$inserted = 0;
while ($cosmInOut_qtyIn > $inserted) {
$sql = "INSERT INTO cosmInOut (cosmInOut_name, cosmInOut_dateIn, cosmInOut_expire, cosmInOut_priceIn, cosmInOut_4sale, cosmInOut_dateOut, cosmInOut_qtyOut, cosmInOut_priceOut)" .
        "VALUES('{$cosmInOut_name}', '{$cosmInOut_dateIn}', '{$cosmInOut_expire}', '{$cosmInOut_priceIn}', '{$cosmInOut_4sale}', '{$cosmInOut_dateOut}', '{$cosmInOut_qtyOut}', '{$cosmInOut_priceOut}')";
    $inserted++;
    }
if ($conn->query($sql) === TRUE) {
    include('../head.php');
    echo '
        <script> some script</script> 
    ';
    include('../footer.php');

} else {
    echo 'Error' . $conn->error;
}

$conn->close();
?>

Obviously, my while function is not working. How can I fix it? Thanks

  • 写回答

1条回答 默认 最新

  • duanchifo2866 2016-01-12 16:59
    关注

    At the moment you repeat creating your insert string $cosmInOut_qtyIn number of times & then just insert it once.

    You could create the query string outside the loop just the once & then repeat the query inside the loop.

    Another solution would be to append the values you want to add $cosmInOut_qtyIn number of times (comma separated) to your query string & then run the query just the once. something like :

    $sql = "INSERT INTO cosmInOut (cosmInOut_name, cosmInOut_dateIn, cosmInOut_expire, cosmInOut_priceIn, cosmInOut_4sale, cosmInOut_dateOut, cosmInOut_qtyOut, cosmInOut_priceOut) VALUES ";
    $sqlv = "('{$cosmInOut_name}', '{$cosmInOut_dateIn}', '{$cosmInOut_expire}', '{$cosmInOut_priceIn}', '{$cosmInOut_4sale}', '{$cosmInOut_dateOut}', '{$cosmInOut_qtyOut}', '{$cosmInOut_priceOut}')";
    
    $inserted = 0;
    while ($cosmInOut_qtyIn > $inserted)
    {
        if ($inserted > 0)
            $sql = $sql . ",";
        $sql = $sql . $sqlv;
        $inserted++;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器