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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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 문장을 보여 주세요.

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

회원로그인

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