배열을 디비에 순차적으로 입력할려고 합니다

배열을 디비에 순차적으로 입력할려고 합니다

QA

배열을 디비에 순차적으로 입력할려고 합니다

답변 2

본문

$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문이 정상적으로 구성이 되었는지

화면에 출력해보면서 문장을 만드시는데 좋을것 같습니다.

 

플래토님 안녕하세요

말씀하신 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;
일단 이렇게 하면 화면에는 정상적으로 구분되서 들어갔다고나오지만 디비에서는 안들어가는게

플래토님이 말씀하신게 맞는거 같은데 열심히 구글링해보면서 다른방법과 잘못된거 찾아보고있는데

쉽지가 않네요 그래도 좋은조언 감사합니다^^

전체적인 스토리를 알면

더 좋은 조언을 해 드릴 수 있습니다.

안녕하세요 엑스엠엘님

텍스트 파일을 불러오는 페이지에서 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><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에는 들어가지가 않습니다..ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 41
© SIRSOFT
현재 페이지 제일 처음으로