2015-01-18 4 views
0

하나의 테이블에 여러 필드를 삽입하려는 경우 문제가 있습니다. 각 테이블에 0 값만 삽입합니다.PHP에서 foreach 루프를 사용하여 여러 필드 삽입

여기 내 양식이다 :

<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 값을 삽입합니다.

누군가 나를 도울 수 있습니까?

+1

시작에서와 같이, 예를 들어 저점 $_POST['unit']을 걷고있을 것' –

+0

은 입력 그 이름을 무엇입니까? 입력 한 이름이 같지 않은 경우 foreach가 필요합니까? –

답변

0

foreach($_POST as....) 오류가 발생했습니다. 글쎄, $ _POST는 테이블에있는 행보다 훨씬 많은 수십 개의 변수를 포함합니다. 이것은 올바른 길을 걷는 것이 아닙니다. 당신의 예에서 올바른 방법 ($ _ POST)에서 print_r`로 foreach($_POST['unit'] as ...)

0
<?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); 
?> 
관련 문제