$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개 / 댓글 7개
맨위의
$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문이 정상적으로 구성이 되었는지
화면에 출력해보면서 문장을 만드시는데 좋을것 같습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 6개
텍스트 파일을 불러오는 페이지에서 form 전송으로 입력하는페이지로 넘겨서 그값을 받아서 시작합니다
위에소스가 해당값을 받아와서 입력하는 페이지입니다
위에 플래토님 말씀되로 insert into talbe (xxx) values ( value1), (value2), (value3) ; 이렇게 만들고싶은게 맞습니다
단일문장으로는 잘들어가는데 엔터 똔느 구분자로 나눌경우에는 벨류값이 하나로 들어가거나
$arrayList = explode('<br>', $_POST["txt"]);
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test ( txt ) VALUES ";
$sub_sql = implode('<br>', $sub_sql_array);
$sql .= $sub_sql;
echo $sql;
이렇게 적용해서 sql을 화면에 출력해본면 나눠서 들어갔다고 나오지만 실제 DB에는 안들어가네요 ㅠㅠ
==
그렇다는 것은 explode()할 때 알맞는 구분자로 구분하지 못 했다는 뜻입니다.
텍스트를 <form><textarea>로 업로드 하신는 건가요?
네 맞습니다
<form name="form_name" method="post" onsubmit="return senddata(this);">
<div class="pad">
<div class="val"><textarea name="txt"><?php echo $result; ?></textarea></div>
</div>
<div class="btnbox"><input type="submit" value="전송하기"></div>
</form>
현제는 이상태에서 나두고 열심히 방법을 찾아보고있습니다.
$arrayList = explode('\n', $_POST["txt"]);
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test ( txt ) VALUES ";
$sub_sql = implode('\n', $sub_sql_array);
$sql .= $sub_sql;
echo $sql;
sql 출력내용은
INSERT INTO test ( txt ) VALUES ( '가,나,다,라,마' )
( '1,2,3,4,5' )
( 'a,b,c,d,e' )
DB 입력 성공
하지만 DB에는 들어가지가 않습니다..ㅠㅠ
,comma가 빠짐
( '1,2,3,4,5' )
,comma가 빠짐
( 'a,b,c,d,e' )
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
말씀하신 insert into talbe (xxx) values ( value1), (value2), (value3) ; 이렇게 만들고싶은게 맞습니다
$arrayList = explode('<br>', $_POST["txt"]);
for ( $i = 0; $i < count($arrayList); $i++ )
{
$sub_sql_array[] = " ( '{$arrayList[$i]}' ) ";
}
$sql = " INSERT INTO test ( txt ) VALUES ";
$sub_sql = implode('<br>', $sub_sql_array);
$sql .= $sub_sql;
echo $sql;
일단 이렇게 하면 화면에는 정상적으로 구분되서 들어갔다고나오지만 디비에서는 안들어가는게
플래토님이 말씀하신게 맞는거 같은데 열심히 구글링해보면서 다른방법과 잘못된거 찾아보고있는데
쉽지가 않네요 그래도 좋은조언 감사합니다^^