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

쿼리 질문 드려요 채택완료

SEAA 7년 전 조회 1,966

쿼리 돌린 후 input value 에 넣으려는데 안돼요

봐주세요.

 

  

 

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

답변 4개

채택된 답변
+20 포인트
e
7년 전

모두를 구분자 "|"로 가져오는걸로 수정해드릴께요.

</p>

<p><?php

  $sql1 = "select * from g5_write_type where ca_name like '%삼각형%' order by wr_subject asc";

   $result1 = sql_query($sql1);

    while ($row1 = sql_fetch_array($result1)) {

      if($type1) $type1.="|";

      $type1 .= $row1[wr_subject];

    }

   

   $sql2 = "select * from g5_write_type where ca_name like '%사각형%' order by wr_subject asc";

   $result2 = sql_query($sql2);

    while ($row2 = sql_fetch_array($result2)) {

      if($type2) $type2.="|";

      $type2 .= $row2[wr_subject];

    }

      

  $type_a = $type1."|".$type2;

 ?></p>

<p>

 

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

답변에 대한 댓글 1개

S
SEAA
7년 전
잘돼요~ ^^
저의 어리버리한 질문에 답변 해주셔서 감사합니다.

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

e
7년 전

while 문 안에서만 변수가 적용됩니다.

그리고 각 while 문당 2개 이상의 제목은 어떻게 연결하실 건가요??

지금 처럼 하면 제일 마지막 하나만 변수에 저장됩니다.

</p>

<p><?php

  $sql1 = "select * from g5_write_type where ca_name like '%삼각형%' order by wr_subject asc";

   $result1 = sql_query($sql1);

    while ($row1 = sql_fetch_array($result1)) {

      $type1 = $row1[wr_subject];

    }

   

   $sql2 = "select * from g5_write_type where ca_name like '%사각형%' order by wr_subject asc";

   $result2 = sql_query($sql2);

    while ($row2 = sql_fetch_array($result2)) {

      $type2 = $row2[wr_subject];

    }

      

  $type_a = $type1."|".$type2;

 ?></p>

<p>

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

답변에 대한 댓글 1개

S
SEAA
7년 전
설명 진심 감사 드립니다.

아래처럼 하면
while($row1 = sql_fetch_array($result)) {
echo "$row1[wr_subject]";
}
결과가 나오기는 하는데요.
$type_a 로 넘어가지가 않아서 질문 드렸던 거였습니다.

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

플래토
7년 전

문법오류와 논리오류가 있습니다.

</p>

<p><?php

  $sql1 = "select * from g5_write_type where ca_name like '삼각형' order by wr_subject asc";

   $result1 = sql_query($sql1);

    while ($row1 = sql_fetch_array($result1)) {

    $row1[wr_subject];     // <-- 이 변수는 어디에 대입을 하시려고 하나요?</p>

<p>                                // 그리고 Loop 입니다.

    }

   

   $sql2 = "select * from g5_write_type where ca_name like '사각형' order by wr_subject asc";

   $result2 = sql_query($sql2);

    while ($row2 = sql_fetch_array($result2)) {

    $row2[wr_subject];     // <-- 이 변수도 어디에 대입을 하시려고 하나요?</p>

<p>                                // 그리고 Loop 입니다.</p>

<p>    }

      

  $type1 = $row1[wr_subject];    // 위에 서 수행한 최종 $row1 의 wr_subject 만 들어갑니다.</p>

<p>                                  // 하지만 마지막 문장을 수행하고 다음것을 대입한 후라 값이 없을겁니다.

  $type2 = $row2[wr_subject];

  

  $type_a = $type1."|".$type2;</p>

<p> </p>

<p>   // 위 두문장에 내용이 없어서 결국 $typq_a 도 값이  | 만 있겠네요

 ?></p>

<p>

 

쿼리가 문제가 아니라.

 

어떻게 하시고자 하는지 정리부터하는게 먼저입니다.

 

위에서 like '삼각형' 은 

 = '삼각형' 과 동일하게 작동합니다.

즉, 앞뒤에 뭐가 있으면 안되고 값이 딱 '삼각형'만 검색됩니다.

 

 

like '%삼각형%' 하면 '삼각형'을 포함한 모든 레코드를 검색합니다.

 

sql_fetch_array 는 모든 검색된 Row들을 다 looping 합니다.

 

따라서 만들어서 구현하고자 하는 방법이나

요건이 명확하지 않고

이렇게 

 

다 훓어서 조건도 없이 최종값만 대입하면

 

뭐가 들어갈지 아무도 모르고 매번 결과값이 상이해집니다.

 

loop 안에서 if문으로 판단하는 조건을 만들던지

Sql자체를 1row만 나오게 하던지

 

원하는 형태를 명확하게 설계하신뒤에 다시 질문하시는게 낫겠습니다.

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

답변에 대한 댓글 1개

S
SEAA
7년 전
자세한 설명 너무 감사 드립니다.
말씀하신 대로 값이 없이 나오고 있습니다.

제가 하고자 하는 것은
ca_name '삼각형' 인 wr_subject 모두와
ca_name '사각형' 인 wr_subject 모두를
각각 가져와서 $type_a 에서 합친 후
<input type="text" id="wr_10" value= "<?php echo $type_a ?>"> 으로 뽑는 것입니다.

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

김철용
7년 전

like %'삼각형 식으로

와일드카드를 사용해야하지 않나요

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

답변에 대한 댓글 1개

S
SEAA
7년 전
말씀 감사합니다.
like '%삼각형%' 해도 안되네요

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

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

로그인