for문으로 update 쿼리문 질문 드려요

for문으로 update 쿼리문 질문 드려요

QA

for문으로 update 쿼리문 질문 드려요

본문

안녕하세요

 

아래처럼 값이 있습니다

 

1 a,b,c

3 가,나,다

4

5 바나나,사과,복숭아

 

그래서 이렇게 for문으로 update 쿼리를 넣었는데.....

 

$text = array('1111','2222','3333','4444','5555');
for($i=0;$i<count($text);$i++){
    $sql = "update test set wr_12 = concat( wr_12, '".implode(',', $text)."' ) ";
}

 

array값이 나눠서 추가 되는게 아니고 한번에 다 들어갑니다..

 

아래처럼 나눠서 순차적으로 넣고 추가하고싶습니다

 

1 a,b,c,1111

2 2222

3 가,나,다,3333

4 4444

5 바나나,사과,복숭아,5555
 

조금만 알려주시면 감사하겠습니다 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 4

test라는 테이블에서 

Key 값으로 사용할 정보는 무엇인가요?

보통 test가 게시판을 의미하는것이라면

 

wr_id 정보가 있을텐데 위의 

1 a,b,c,1111

2 2222

3 가,나,다,3333

4 4444

5 바나나,사과,복숭아,5555

에서

맨 앞칸의

1

2

3

4

5

가 wr_id라고 한다면

 


<?php 
    $text = array(
        '1' => 'a,b,c,1111'
        , '2' =>  '2222'
        , '3' => '가,나,다,3333'
        , '4' => '4444'
        , '5' => '바나나,사과,복숭아,5555'
    );
    $text_key = array_keys($text);   // 키 정보 추출 위에 설명한 wr_id를 배열정보로 인식한다는가정
    for ($i=0; $i < count($text); $i++) {
        $sql = "update text set wr_12 = '{$text[$i]}' where wr_id = '{$text_key[$i]}' ";
        sql_query($sql);
    }
?>

 

플래토님 감사합니다

알려주신 코드를 사용했는데..값이 안들어갑니다

숫자가 wr_id고 key값입니다

임시로 테스트용한다고 array를 5개만 넣었습니다

$text = array('1111','2222','3333','4444','5555');

아래는 사용한 코드입니다..

<?php

$conn = mysqli_connect("localhost", "root", "1234", "test");

$text = array(
        '1' => 'a,b,c,1111'
        , '2' =>  '2222'
        , '3' => '가,나,다,3333'
        , '4' => '4444'
        , '5' => '바나나,사과,복숭아,5555'
    );
    $text_key = array_keys($text);  // 키 정보 추출 위에 설명한 wr_id를 배열정보로 인식한다는가정
    for ($i=0; $i < count($text); $i++) {
        $sql = "update text set wr_12 = '{$text[$i]}' where wr_id = '{$text_key[$i]}' ";
    }

$result=mysqli_query($conn,$sql);

mysqli_close($conn);

?>

wr_id 이고 key라는데 안들어간다는건
해당구문이 실행되지 않게 했다는 의미입니다.

실제 실행문이 작동하기전에
화면에라도 출력을 해보셨나요?
출력된 쿼리로 직접 수행시 작동되는지가 우선 확인되어야죠

올리신 댓글을 보면
sql_query의 수행문이 for문 밖에 있기때문에 정상적으로 수행되지 않을겁니다.

for문 안에서
sql_query가 위치되어야 할것이구요
실행여부를 판단하기전에
echo $sql."<BR>";
을 통해서 각 문장들이 정상적으로 구성이 된건지 검증을 먼저 해보세요

플래토님 감사합니다 어디가 잘못인지 저도 다시한번 살펴보고 알았습니다 ㅠㅠ

포문안에 넣어야하는데 밖으로 sql 수행문을 넣어서 안되었던거였습니다 ㅠㅠ

정말..친절한 답변 감사합니다^^

그냥 $test[$i] 하면됩니다

 

implode 빼세여

where 조건이 들어가지 않으면 모든 레코드가 업데이트됩니다.


$text = array('1111','2222','3333','4444','5555');
for ($i = 0;$i < count($text); $i++){
    $sql = "update test set wr_12 = concat( wr_12, ',". $text[$i] ."') where left(wr_12, 1) = '" . ($i + 1) . "' ";
}

$text = array(
        '1' => 'a,b,c,1111'
        , '2' =>  '2222'
        , '3' => '가,나,다,3333'
        , '4' => '4444'
        , '5' => '바나나,사과,복숭아,5555'
    );
foreach( $text as $id=>$val) {
        $sql = "update text set wr_12 = '{$val}' where wr_id = '{$id}' ";

        $result=mysqli_query($conn,$sql);
}
 

엑스엠엘님 답변 감사합니다

알려주신 코드로 테스트 해보았지만 값이 전혀 안들어갑니다 ㅠㅠ

테이블은 이렇게 2개로만 구성되어있습니다.

wr_id int AUTO_INCREMENT
wr_12 text

아래처럼 하면 값은 들어가지만
$text = array('1111','2222','3333','4444','5555');
for ($i = 0;$i < count($text); $i++){
  $sql = "update test set wr_12 = concat( wr_12, ',". $text[$i] ."') where wr_id = '" . ($i + 1) . "' ";
  $result=mysqli_query($conn,$sql);
}

wr_id = 5 wr_12 = ,5555 이렇게만 들어갑니다 ㅠㅠ

$text = array(
        '1' => 'a,b,c,1111'
        , '2' =>  '2222'
        , '3' => '가,나,다,3333'
        , '4' => '4444'
        , '5' => '바나나,사과,복숭아,5555'
    );
foreach( $text as $id=>$val) {
    echo  $sql = "update text set wr_12 = '{$val}' where wr_id = '{$id}' ";


}
exit;


이렇게 해서 나오는 sql 문장을 보여 주세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 120
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT