[英]insert multiple fields using foreach loop in php
我想在一個表中插入多個字段時遇到問題。 它只向每個表插入0值。
這是我的表格:
<table class=table_position>
<?php
for($num_request=$_POST['number_item'];$num_request>0;$num_request--){
echo"<tr>
<th><input type='number' step='1' min='1' name='quantity[$num_request]' id='quantity$num_request' onkeyup='multiply$num_request();' style='text-align:center;width:96.5px;height:25;' required></th>
<th><input type='text' name='unit[$num_request]' align='middle' style='text-align:center;width:65px;height:25;' required></th>
<th><input type='text' name='description[$num_request]' align='middle' style='text-align:center;width:343px;height:25;' required></th>
<th><input type='text' name='stocknum[$num_request]' align='middle' style='text-align:center;width:99px;height:25;' required></th>
<th><input type='number' min='1' name='unitcost[$num_request]' id='unitcost$num_request' onkeyup='multiply$num_request(),add() ' align='middle' style='text-align:center;width:100px;height:25;' required></th>
<th><input type='text' name='totalcost[$num_request]' id='product$num_request' class='add' align='middle' style='text-align:center;width:164px;height:25;' readonly></th>
</tr>";
}
?>
</table>
這是提交代碼:
$query="SELECT * FROM request WHERE username='$usernames' ORDER BY id DESC LIMIT 1";
$result=mysqli_query($con,$query);
$row = mysqli_fetch_array($result);
$num_row=mysqli_num_rows($result);
$request_id=$row['id'];
$i = 0;
foreach ($_POST as $val) {
$quantity=$_POST['quantity'][$i];
$unit=$_POST['unit'][$i];
$item_description=$_POST['description'][$i];
$unit_cost=$_POST['unitcost'][$i];
$total_cost=$_POST['totalcost'][$i];
include("dbc1.php");
$sql="INSERT INTO request_items (request_id,quantity,unit,item_description,unit_cost,total_cost)
VALUES ('$request_id','$quantity','$unit','$item_description','$unit_cost','$total_cost')";
$i++;
if(!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
}
該查詢將插入數據庫,但會在每個表中插入0個值。
有人可以幫幫我嗎?
您的錯誤是您走路foreach($_POST as....)
。 好吧,$ _ POST將包含許多不同的變量,遠不止表中的行。 這是不正確的事情。 在您的示例中,正確的方法是走過$_POST['unit']
,例如foreach($_POST['unit'] as ...)
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "my_db");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Prepare an insert statement */
$query = "INSERT INTO request_items (request_id,quantity,unit,item_description,unit_cost,total_cost) VALUES (?,?,?,?,?,?)";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, "iiisii", $request_id, $quantity, $unit,$item_description,$unit_cost,$total_cost);
$count = count($_POST['quantity']);
for($i=$count; $i > 0; $i--){
$quantity=$_POST['quantity'][$i];
$unit=$_POST['unit'][$i];
$item_description=$_POST['description'][$i];
$unit_cost=$_POST['unitcost'][$i];
$total_cost=$_POST['totalcost'][$i];
/* Execute the statement */
mysqli_stmt_execute($stmt);
}
/* close statement */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($link);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.