Вставить несколько строк в MySQL по PHP

Я хочу добавить статические строки и несколько строк одновременно в MySQL, а также счет-фактуру. Я могу добавить строку в MySQL. Но когда я добавляю несколько строк, то вставляю первую строку полностью в поле, но не вставляю все поля из другой строки, только вставляю динамическое поле в mysql. Например, спецификация, qty insert хорошо, но pur, appb, date, appn not insert из второй строки. Может ли кто-нибудь помочь мне. Мой код ниже...

<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;

2 ответа

Попробуй это:

$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) . "')";
Другие вопросы по тегам