Вставить несколько строк в MySQL путем переполнения стека

Я хочу добавить несколько статических строк и несколько строк одновременно в 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;

1

Решение

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

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

Если у вас большие данные, используйте один раз запрос на вставку, это повысит эффективность.

2

Другие решения

Просто сделайте с именем поля и используйте функцию 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) . "')";
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector