簡體   English   中英

通過php將多行插入mysql

[英]Insert multiple row into mysql by php

我想在mysql和invoice中添加一些靜態行和多行同時。 我可以在mysql中添加行。 但是當我添加多行然后完全插入第一行所有字段但不插入來自其他行的所有字段時,只將動態字段插入到mysql中。 例如規范,qty插入良好,但pur,appb,日期,appn不從第二行插入。 任何人都可以幫助我。 我的代碼如下......

<form action="ps.php"  method="POST"> 
      <table id="customers">
      <tr>
      <td>Project/Purpose</td><td><input type="text" name="pur[]" required="required"  /></td>
      <td>Approved Budget:</td><td><input type="text" name="appb[]" required="required"  /></td>
      </tr>
       <tr>
      <td>Expected Delivery Date:</td><td><input type="date" name="expdate[]"  required="required" /></td>
       </tr>

      <td>Approve by:</td><td><input type="text" name="appn[]"  required="required" /></td>
      </tr>
      </table>

      <fieldset style="background-color:#00FFFF"><h2>Purchase Information</h2></fieldset>


   <div id="page-wrap">
  <table id="customers">

          <tr>
              <th>Goods/Services(include description and specifications)</th>
              <th>Qty Required(Goods only)</th>
              <th>Qty on Hand(Goods only)</th>            
              <th>Qty to Order</th>
              <th>Est. Unit Price</th>
              <th>Total Estimated Cost</th>
          </tr>

          <!-- add remove row dynamically -->  
          <tr class="item-row">
              <td class="item-name"><div class="delete-wpr"><a class="delete" href="javascript:;" title="Remove row">X</a><textarea class="noscrollbars" name="specification[]" onkeyup="autoGrow(this);"></textarea></div></td>
              <td ><input type="number" name="" /></td>
              <td ><input type="number" name="" /></td>
              <td><input type="number" class="qty" name="qty[]" /></td>
              <td><input type="number" class="cost" name="esp[]" /> </td>

              <td><span class="price">0.00</span></td>
          </tr>

           <!-- add remove row dynamically -->

           <tr class="item-row">
              <td class="item-name"><div class="delete-wpr"><a class="delete" href="javascript:;" title="Remove row">X</a><textarea class="noscrollbars" name="specification[]" onkeyup="autoGrow(this);"></textarea></div></td>
              <td ><input type="number" name="" /></td>
              <td ><input type="number" name="" /></td>
              <td><input type="number" class="qty" name="qty[]" /></td>
              <td><input type="number" class="cost" name="esp[]" /> </td>
              <input type="hidden" name="empid[]" value='<?php echo $empid;?>' />
              <td><span class="price">0.00</span></td>

          </tr>

          <tr id="hiderow">
            <td colspan="6"><a id="addrow" href="javascript:;" title="Add a row">Add a row</a></td>
          </tr>

          <tr>
              <td colspan="4" class="blank"> </td>
              <td colspan="1" class="total-line">Total</td>
              <td class="total-value"><div id="total">0.00</div></td>
          </tr>
          <tr>
              <td colspan="4" class="blank"> </td>
              <td colspan="1" class="total-line"><input type="submit" name="submit" value="Submit" /></td>

              <td class="blank"><textarea id="paid" style="display:none;" ></textarea></td>
          </tr>

      </table>



    </div>



  </form>

ps.php

if(isset($_POST)==true && empty($_POST)==false): 
                $pur = $_POST['pur'];           
                $appb=$_POST['appb'];
                $expdate=$_POST['expdate'];         

                $appn=$_POST['appn'];
                $specification=$_POST['specification'];                 
                $qty=$_POST['qty'];
                $esp=$_POST['esp'];                             
                $empid=$_POST['empid']; 

                foreach($qty as $a => $b){                   



                    $result = mysqli_query($mysqli, "INSERT INTO `pr`(`pur`, `empid`, `appb`, `expdate`, `appn`, `specification`, `qty`, `esp`) VALUES ('$pur[$a]','$empid[$a]','$appb[$a]','$expdate[$a]','$appn[$a]','$specification[$a]','$qty[$a]','$esp[$a]')");       

                    } 

                    echo "Your entry has been successfully recorded, Thank you!";       
            else:  echo "Some things went wrong please try again";  
            endif;

嘗試這個:

$qry  = "INSERT INTO `pr`(`pur`, `empid`, `appb`, `expdate`, `appn`, `specification`, `qty`, `esp`) VALUES ";
$i = 0;
foreach($qty as $a => $b) {                   

    $qry .= "('$pur[$a]','$empid[$a]','$appb[$a]','$expdate[$a]','$appn[$a]','$specification[$a]','$qty[$a]','$esp[$a]')";
    if($i == count($qty)) {
        $qry .= ";";
    } else {
        $qry .= ",";
    }

$i++;
} 

$result = mysqli_query($mysqli, $qry);

如果你有大數據然后使用插入查詢一次,它將提高效率。

只需使用字段名稱並在插入數據時使用implode函數。

例如:

    $data['name'] = 'abc';
    $data['description'] = 'description';
    $data['created'] = date("Y-m-d H:i:s");

查詢:

     $fields = array_keys($data);
        $sql = "INSERT INTO table_name . (`" . implode('`,`', $fields) . "`) 
                VALUES('" . implode("','", $data) . "')";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM