for문으로 update 쿼리문 질문 드려요 채택완료
안녕하세요
아래처럼 값이 있습니다
1 a,b,c
2
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개
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개
해당구문이 실행되지 않게 했다는 의미입니다.
실제 실행문이 작동하기전에
화면에라도 출력을 해보셨나요?
출력된 쿼리로 직접 수행시 작동되는지가 우선 확인되어야죠
올리신 댓글을 보면
sql_query의 수행문이 for문 밖에 있기때문에 정상적으로 수행되지 않을겁니다.
for문 안에서
sql_query가 위치되어야 할것이구요
실행여부를 판단하기전에
echo $sql."<BR>";
을 통해서 각 문장들이 정상적으로 구성이 된건지 검증을 먼저 해보세요
포문안에 넣어야하는데 밖으로 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개
알려주신 코드로 테스트 해보았지만 값이 전혀 안들어갑니다 ㅠㅠ
테이블은 이렇게 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 이렇게만 들어갑니다 ㅠㅠ
'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 문장을 보여 주세요.
지금은 잘됩니다~ 채택못드려서 죄송합니다..ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
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개
채택을 못드려서 죄송합니다 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
알려주신 코드를 사용했는데..값이 안들어갑니다
숫자가 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);
?>