【问题标题】:insert multiple fields using foreach loop in php在php中使用foreach循环插入多个字段
【发布时间】:2015-03-16 17:23:02
【问题描述】:

我想在一个表中插入多个字段时遇到问题。 它只向每个表插入 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 个值。

有人可以帮帮我吗?

【问题讨论】:

  • print_r($_POST)开头
  • 你输入的名字是什么?你输入的名字不一样,你需要一个foreach吗?

标签: php mysql


【解决方案1】:

你的错误是你走foreach($_POST as....)。好吧,$_POST 将包含许多不同的变量,比表中的行多得多。这不是正确的事情。在您的示例中,正确的方法是通过$_POST['unit'],例如foreach($_POST['unit'] as ...)

【讨论】:

    【解决方案2】:
    <?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);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多