mysql 데이터 필드 수가 다를 때 INSERT 채택완료
타버린나무
2년 전
조회 1,921
test 테이블에 a,b,c,d....... 200개의 필드가 있습니다.
데이터 필드는 갯수가 200개 딱 맞는것도 있지만 100개짜리 등 데이터마다 조금씩 다릅니다.
INSERT INTO 할때 데이터 필드갯수 상관없이 넣을 수 있는 방법이 있을까요
참고로 아래 코드는 데이터의 필드갯수가 200개 짜리일때 쓰는 코드입니다.
데이터 필드 갯수가 안맞으면 쓸수가 없네요. 어딜 손봐야 할까요...
</p>
<p>$sql = "INSERT INTO `test` VALUES ( '', ";
foreach($val as $key1 => $val1) {
if($x == $length) { $jjum = " "; } else { $jjum = ","; }
$sql .= " '{$val1}'{$jjum}";</p>
<p> $x++;
}
$sql .= "); ";</p>
<p>sql_query($sql);
댓글을 작성하려면 로그인이 필요합니다.
답변 3개
채택된 답변
+20 포인트
2년 전
엑셀에서 자료를 DB에 넣는 것으로 추측 되는데요.
값이 비어 있는 경우라면 그냥 '' 등으로 처리하시면 됩니다.
뒷부분이 모자란 경우는 해당 갯수만큼 ''로 채워 주시면 됩니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
타버린나무
2년 전
댓글을 작성하려면 로그인이 필요합니다.
2년 전
조금 무식한 방법인지 모르겠지만.. 아무튼 해결은 했습니다.
</p>
<p> $fields = [ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ',
'BA','BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ',
'CA','CB','CC','CD','CE','CF','CG','CH','CI','CJ','CK','CL','CM','CN','CO','CP','CQ','CR','CS','CT','CU','CV','CW','CX','CY','CZ',
'DA','DB','DC','DD','DE','DF','DG','DH','DI','DJ','DK','DL','DM','DN','DO','DP','DQ','DR','DS','DT','DU','DV','DW','DX','DY','DZ',
'EA','EB','EC','ED','EE','EF','EG','EH','EI','EJ','EK','EL','EM','EN','EO','EP','EQ','ER','ES','ET','EU','EV','EW','EX','EY','EZ',
'FA','FB','FC','FD','FE','FF','FG','FH','FI','FJ','FK','FL','FM','FN','FO','FP','FQ','FR','FS','FT','FU','FV','FW','FX','FY','FZ',
'GA','GB','GC','GD','GE','GF','GG','GH','GI','GJ','GK' ]; // 전체 필드명</p>
<p>foreach($data as $key => $val) {
$length = count($val);
if( !$val['A'] ) { continue; }
$x = 1; // 배열 끝 확인용
$sql = "INSERT INTO `{$db_name}` ( ";</p>
<p> for($i=1; $i <=$length; $i++) { // 데이터 필드 갯수에 따라 테이블 필드 갯수 정의
if($x == $length) { $jjum = " "; } else { $jjum = ","; }
$sql .= " `{$fields[$i-1]}`{$jjum}";
$x++;
}</p>
<p> $x = 1; // 배열 끝 확인용
$sql .= ") VALUES ( ";
foreach($val as $key1 => $val1) {
if($x == $length) { $jjum = ""; } else { $jjum = ","; }
$sql .= " '{$val1}'{$jjum}";
$x++;
}
$sql .= "); ";
sql_query($sql);
}
혹시 다른 좋은 방법있으면 알려주시면 감사하겠습니다.
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
저는 필드갯수 = 데이터 갯수 맞추려고 어렵게만 생각했네요.
감사합니다.