用php和mysql多次插入

时间:2014-10-15 18:06:00

标签: php mysql

我正在创建多个插入页面,用户可以在其中选择需要插入多少条记录。

<form name="" action="" method="post">   
<p>Write Down How many rows are you trying to insert<input type="text" name="numb" placeholder=""/></p>
<input type="submit" name="add"/><br>
<?php
if(isset($_REQUEST['add'])){
$add=$_POST['numb'];
for($i=0; $i<$add; $i++) {
    echo "<form method=\"post\" action=\"2.php\" >";

    echo "Water Pump<input type=\"text\" name=\"dap\"/><br>
    Tractor Hiring<input type=\"text\" name=\"tractor\"/><br><form>";
    }   echo "<input type=\"submit\" name=\"save\"/><br>";
}
?>

我没有重定向到第2页。此代码位于第2页。

if(isset($_REQUEST['save'])){
$insert=$conenction->query("insert into machinery (tractor_hiring,water_pump)VALUES('".$_POST['tractor']."','".$_POST['dap']."')");
if($insert!=true)
echo "nothing happens";
else 
echo "good to go";
}

1 个答案:

答案 0 :(得分:0)

我将展示我将如何做到这一点,试图做一个步骤:

  1. 将字段名称更改为machine[][dap]machine[][tractor] 使用machine[]将创建一个数组,每个字段名称都在[]内。

  2. 创建一个名为(例如)$sql的新数组,如下所示:
    $sql=array();

  3. 使用$_POST循环每个foreach
    foreach($_POST['machine'] as $v)

  4. foreach内,您会将“内置”查询内容分配给$sql
    $sql[]='"'.my_escape($v['dap']).'","'.my_escape($v['tractor']).'"';
    通知my_escape是一个虚构的函数,用于转义数据(如mysql_real_escape_string())。

  5. 运行您的查询,并使用它加入数组:
    $connection->query('insert into machinery (tractor_hiring,water_pump)VALUES('.implode('),(',$sql).')');

  6. 最终代码(文件1):

    <form name="" action="" method="post">   
    <p>Write Down How many rows are you trying to insert<input type="text" name="numb" placeholder=""/></p>
    <input type="submit" name="add"/><br>
    <?php
    if(isset($_REQUEST['add'])){
    $add=$_POST['numb'];
    for($i=0; $i<$add; $i++) {
        echo "<form method=\"post\" action=\"2.php\" >";
    
        echo "Water Pump<input type=\"text\" name=\"machine[][dap]\"/><br>
        Tractor Hiring<input type=\"text\" name=\"machine[][tractor]\"/><br><form>";
        }   echo "<input type=\"submit\" name=\"save\"/><br>";
    }
    ?>
    

    最终代码(文件2):

    <?php
    if(isset($_REQUEST['save'])){
        $sql=array();
        foreach($_POST['machine'] as $v)
        {
            $sql[]='"'.my_escape($v['tractor']).'","'.my_escape($v['dap']).'"';
        }
        $connection->query('insert into machinery (tractor_hiring,water_pump)VALUES('.implode('),(',$sql).')');
        if($insert!=true)
            echo "nothing happens";
        else 
            echo "good to go";
    }
    ?>
    

    注意:我避免触及代码错误(仅在第二个文件中更改,因为它可怕)。你应该以适当的方式缩进每个文件!
    另请注意,我在最终代码中使用了相同的虚构函数


    对于报告的第1页问题,以下是更改:

    1. 表单无效。通过设置action="#"

    2. 轻松修复
    3. 仅发送带有值的输入。 <input type="submit" name="add"/>没有价值 <input type="submit" name="add" value="Add"/>
      注意value也将用作要显示的文字。

    4. </form>没有结束<form>

    5. 最终结果:

      <form action="#" method="post">   
      <p>Write Down How many rows are you trying to insert<input type="text" name="numb" placeholder=""/></p>
      <input type="submit" name="add" value="Add"/><br>
      </form>
      <?php
      if(isset($_REQUEST['add'])){
      $add=$_POST['numb'];
      for($i=0; $i<$add; $i++) {
          echo "<form method=\"post\" action=\"2.php\" >";
      
          echo "Water Pump<input type=\"text\" name=\"machine[][dap]\"/><br>
          Tractor Hiring<input type=\"text\" name=\"machine[][tractor]\"/><br><form>";
          }   echo "<input type=\"submit\" name=\"save\"/><br>";
      }
      ?>