현 상황
$sno=$_POST['sno'];
$query="select e.sno,e.grade,e.cno,c.cname,c.credit,c.dept,c.prname
from enrol e,course c
where exists(select c1.cno from course c1 where e.sno=$sno and e.cno=c1.cno)
and c.cno=e.cno";
$stmt=oci_parse($conn,$query);
질문 : oci_define 함수를 써도 CNO의 값을 $cno가 받을수가없습니다. 이유와 해결방법 부탁드립니다.
해본것
oci_define_by_name($stmt,'CNO'.$cno);oci_define_by_name($stmt,'ENROL.CNO'.$cno);
안됩니다.
Comment 4
-
니징구
2015.05.11 21:41
-
건우아빠
2015.05.12 09:38
php는 모르는데...
내용을 보니 컬럼을 설정한 변수로 받겠다는 정의 인듯...
oci_execute($stmt);
while (oci_fetch($stmt)) {
echo "ENrol.cnoid $cno CNAME $cname .... <br>\n";
}oci_free_statement($stmt);
oci_close($conn);소스에 이런 내용이 있는지 ?
https://php.net/manual/en/function.oci-define-by-name.php
https://php.net/manual/en/function.oci-bind-by-name.php
-
처리짱
2015.05.12 11:02
저도 php는 잘모르나
쿼리문이
"where exists(select c1.cno from course c1 where e.sno=" + $sno + "and e.cno=c1.cno)"
이런식이 되어야 맞을거 같습니다.
$sno 값을 where 절에 쓴다면은...
위에 쿼리는 그냥 실행해도 에러 날듯.
-
건우아빠
2015.05.12 13:52
실제 디비로 넘어 오는 쿼리 내용이 어떻게 되시는지
보시는게 좋을듯 합니다.
sql server 프로파일러로 추적하시면 php에서 넘어오는 쿼리 내용이 어떻게 되는가 확인 가능 합니다 .
그걸 보시면 문제 해결의 실마리를 찾으실수 있을듯 합니다.
첨부파일 1은 소스
2는 페이지입니다.