테스트 사이트 - 개발 중인 베타 버전입니다

for문으로 update 쿼리문 질문 드려요 채택완료

발렌슈테인 4년 전 조회 1,806

안녕하세요

 

아래처럼 값이 있습니다

 

1 a,b,c

3 가,나,다

4

5 바나나,사과,복숭아

 

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

 

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

 

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

 

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

 

1 a,b,c,1111

2 2222

3 가,나,다,3333

4 4444

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
플래토
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라고 한다면

 

</p>

<p><?php </p>

<p>    $text = array(</p>

<p>        '1' => 'a,b,c,1111'</p>

<p>        , '2' =>  '2222'</p>

<p>        , '3' => '가,나,다,3333'</p>

<p>        , '4' => '4444'</p>

<p>        , '5' => '바나나,사과,복숭아,5555'</p>

<p>    );</p>

<p>    $text_key = array_keys($text);   // 키 정보 추출 위에 설명한 wr_id를 배열정보로 인식한다는가정</p>

<p>    for ($i=0; $i < count($text); $i++) {</p>

<p>        $sql = "update text set wr_12 = '{$text[$i]}' where wr_id = '{$text_key[$i]}' ";</p>

<p>        sql_query($sql);</p>

<p>    }</p>

<p>?></p>

<p>

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

발렌슈테인
4년 전
플래토님 감사합니다

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

숫자가 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);

?>
플래토
4년 전
wr_id 이고 key라는데 안들어간다는건
해당구문이 실행되지 않게 했다는 의미입니다.

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

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

for문 안에서
sql_query가 위치되어야 할것이구요
실행여부를 판단하기전에
echo $sql."<BR>";
을 통해서 각 문장들이 정상적으로 구성이 된건지 검증을 먼저 해보세요
발렌슈테인
4년 전
플래토님 감사합니다 어디가 잘못인지 저도 다시한번 살펴보고 알았습니다 ㅠㅠ

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

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

댓글을 작성하려면 로그인이 필요합니다.

$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); }  

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

발렌슈테인
4년 전
엑스엠엘님 답변 감사합니다

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

테이블은 이렇게 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 이렇게만 들어갑니다 ㅠㅠ
엑스엠엘
4년 전
$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 문장을 보여 주세요.
발렌슈테인
4년 전
엑스엠엘님 감사합니다..제가 실수를해서 그랬습니다 ㅠㅠ
지금은 잘됩니다~ 채택못드려서 죄송합니다..ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

4년 전

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

</p>

<p>$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) . "' ";

}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

발렌슈테인
4년 전
트샷님 친절하게 알려주셔서 감사합니다

채택을 못드려서 죄송합니다 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

안뇽하세용

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

 

implode 빼세여

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

발렌슈테인
4년 전
감사합니다 다시 한번 해보겠습니다..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인