배열을 DB에 UPDATE 하려고 합니다
본문
안녕하세요.
몇가지 질문 좀 드리고자 합니다.
A.php
B.php
두 개의 파일이 있고
A.php에는
<?php
$sql = " select * from company_item_option_temp where mb_id='{$member['mb_id']}' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
?>
<tr>
<td><input type="text" name="value_1[]" value="<?php echo $row['value_1'];?>"></td>
<td><input type="text" name="value_2[]" value="<?php echo $row['value_2'];?>"></td>
<td><input type="text" name="price[]" value="<?php echo $row['price'];?>"></td>
<td><input type="text" name="quantity[]" value="<?php echo $row['quantity'];?>"></td>
<td><input type="text" name="status[]" readonly style="border:0" value="<?php echo $row['status'];?>"></td>
<td>
<select name="op_use[]">
<option><?php if ($row['op_use'] == 'Y') { echo "Y"; } else { echo "N"; }?></option>
<option><?php if ($row['op_use'] == 'Y') { echo "N"; } else { echo "Y"; }?></option>
</select>
</td>
<td><input type="text" name="manage_code[]" value="<?php echo $row['manage_code'];?>"></td>
<td><a href="javascript:thumnail_popup('<?php echo $row['thumnail'];?>',400,400)"><img src="<?php echo $row['thumnail']; ?>" width="30"></a></td>
</tr>
<?php } ?>
이렇게 input 값을 배열로 받을 수 있게끔 해놨습니다.
(모든 소스는 아닙니다. 오해마시길..)
SELECT로 1차 지정된 값을 받아오고 for문으로 input에 값을 넣어줬습니다.
그리고 사용자가 임의로 값을 변경해서 submit을 하게 되면,
B.php 에서는
for ($j = 0; $j <= $i; $j++) {
$sql = " update company_item_option_temp set
type = '{$type}',
value_1 = '{$_POST['value_1'][$j]}',
value_2 = '{$_POST['value_2'][$j]}',
price = '{$_POST['price'][$j]}',
quantity = '{$_POST['quantity'][$j]}',
status = '{$_POST['status'][$j]}',
op_use = '{$_POST['op_use'][$j]}',
manage_code = '{$_POST['manage_code'][$j]}'
where mb_id = '{$member['mb_id']}' ";
$result = sql_query($sql);
}
위와 같은 형태로 post 값을 받아오면서 $i 값만큼 UPDATE 하게 해놨습니다.
($i 값은 마찬가지로 post로 넘겨받아온 값입니다)
일종의 재고관리를 떠올리시면 되는데,
이미 입력되어 있는 재고관리의 여러가지 항목들을 for문으로 쿼리돌려서 쭉 뽑아온 뒤
나열된 각 항목들을 수정한 후 submit 하면 UPDATE 하는 형태라고 보시면 됩니다.
그런데 위 코드를 실행하면 제대로 값이 들어가질 않습니다.
print_r 로 배열값이 잘 넘어오는지 뽑아봤을 때는 문제없이 전달받는 것으로 출력이 되는데
순차적으로 한 레코드씩 UPDATE 해야되는 상황에서 제대로 UPDATE가 되지 않고
공백으로 값이 들어가네요.
쿼리문에 무슨 문제가 있는걸까요..
고수님들의 명쾌한 해답을 기다리겠습니다.
질문 읽어주셔서 감사합니다.
!-->!-->
답변 1
01 |
for ($j = 0; $j <= $row; $j++) { |
02 |
$sql = " update company_item_option_temp set |
03 |
|
04 |
value_1 = '{$_POST['value_1'][$j]}', |
05 |
value_2 = '{$_POST['value_2'][$j]}', |
06 |
price = '{$_POST['price'][$j]}', |
07 |
quantity = '{$_POST['quantity'][$j]}', |
08 |
status = '{$_POST['status'][$j]}', |
09 |
op_use = '{$_POST['op_use'][$j]}', |
10 |
manage_code = '{$_POST['manage_code'][$j]}' |
11 |
where mb_id = '{$member['mb_id']}' "; |
12 |
$result = sql_query($sql); |
13 |
} |