쿼리 질문 드려요
본문
쿼리 돌린 후 input value 에 넣으려는데 안돼요
봐주세요.
<?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];
}
$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];
}
$type1 = $row1[wr_subject];
$type2 = $row2[wr_subject];
$type_a = $type1."|".$type2;
?>
<input type="text" id="wr_10" value= "<?php echo $type_a ?>">
답변 4
모두를 구분자 "|"로 가져오는걸로 수정해드릴께요.
<?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;
?>
!-->
문법오류와 논리오류가 있습니다.
<?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]; // <-- 이 변수는 어디에 대입을 하시려고 하나요?
// 그리고 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]; // <-- 이 변수도 어디에 대입을 하시려고 하나요?
// 그리고 Loop 입니다.
}
$type1 = $row1[wr_subject]; // 위에 서 수행한 최종 $row1 의 wr_subject 만 들어갑니다.
// 하지만 마지막 문장을 수행하고 다음것을 대입한 후라 값이 없을겁니다.
$type2 = $row2[wr_subject];
$type_a = $type1."|".$type2;
// 위 두문장에 내용이 없어서 결국 $typq_a 도 값이 | 만 있겠네요
?>
쿼리가 문제가 아니라.
어떻게 하시고자 하는지 정리부터하는게 먼저입니다.
위에서 like '삼각형' 은
= '삼각형' 과 동일하게 작동합니다.
즉, 앞뒤에 뭐가 있으면 안되고 값이 딱 '삼각형'만 검색됩니다.
like '%삼각형%' 하면 '삼각형'을 포함한 모든 레코드를 검색합니다.
sql_fetch_array 는 모든 검색된 Row들을 다 looping 합니다.
따라서 만들어서 구현하고자 하는 방법이나
요건이 명확하지 않고
이렇게
다 훓어서 조건도 없이 최종값만 대입하면
뭐가 들어갈지 아무도 모르고 매번 결과값이 상이해집니다.
loop 안에서 if문으로 판단하는 조건을 만들던지
Sql자체를 1row만 나오게 하던지
원하는 형태를 명확하게 설계하신뒤에 다시 질문하시는게 낫겠습니다.
!-->like %'삼각형 식으로
와일드카드를 사용해야하지 않나요
while 문 안에서만 변수가 적용됩니다.
그리고 각 while 문당 2개 이상의 제목은 어떻게 연결하실 건가요??
지금 처럼 하면 제일 마지막 하나만 변수에 저장됩니다.
<?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;
?>