배열을 디비에 순차적으로 입력할려고 합니다
본문
$arrayList = array('1,2,3,4,5,6,7,8,9,10,가,나,다,라,마');
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test (txt ) VALUES ";
$sub_sql = implode(',', $sub_sql_array);
$sql .= $sub_sql;
echo $sql;
이렇게 작성후 실행하면 디비에 순차적으로 입력이 잘됩니다
그래서 txt파일로 만들어서 불러와 배열로 담아서 \n로 구분을하고
1,2,3,4,5
6,7,8,9,10
가,나,다,라,마
파일 불러와서 부분 생략....
$arrayList = $_POST["txt"];
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test ( txt ) VALUES ";
$sub_sql = explode('\n', $sub_sql_array);
$sql .= $sub_sql;
echo $sql;
이렇게 하면 안됩니다 ㅠㅠ 어디가 잘못인지 모르겠습니다 조금만 알려주시면 감사하겠습니다 ㅠㅠ
답변 2
맨위의
$arrayList = array('1,2,3,4,5,6,7,8,9,10,가,나,다,라,마');
에는 1개의 배열에 1개의 문자열이 들어있습니다.
'로 시작하여 '로끝나는 곳까지 1개의 문장입니다.
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
여기에는 1개의 값만 존재하겠죠
나름 필요한 로직이 작동하는데는 큰 지장이 없을것 같습니다만
즉, 1개의 values가 작동할테니까요
----------------------------
그래서 txt파일로 만들어서 불러와 배열로 담아서 \n로 구분을하고
1,2,3,4,5
6,7,8,9,10
가,나,다,라,마
파일 불러와서 부분 생략....
$arrayList = $_POST["txt"];
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test ( txt ) VALUES ";
$sub_sql = explode('\n', $sub_sql_array);
$sql .= $sub_sql;echo $sql;
----------------------------------
위에선 implode로 문장을 단일문장으로 만드셨는데
아래에선 explode로 분할문장을 만드셨네요
문장중간에 \n 으로 분리가 되니 비정상적으로 작동될수밖에 없을것 같구요
반복문으로 결합도 아닌 $sql .= $sub_sql 로
모호한 문장을 만들어서 배열을 배열이 아닌 형태로 대입하니 오류가 날수밖에 없을것같습니다.
insert into talbe (xxx) values ( value1), (value2), (value3) ;
과 같은 문장을 만드시려고 하는것으로 추측되는데
만든 sql문이 정상적으로 구성이 되었는지
화면에 출력해보면서 문장을 만드시는데 좋을것 같습니다.
전체적인 스토리를 알면
더 좋은 조언을 해 드릴 수 있습니다.