스크립트 안에 php로 SQL넘길 때 sql문을 찍으려면 어떻게 해야 하나요?
본문
스크립트안에서 php를 이용하여 mySQL DB테이블에 데이터를 insert하는 함수를 만들었습니다.
SQL문이 많이 길어서 해당 SQL문을 확인 하려고
echo($SQL); print_r ($sql); 등을 php함수 않에 명시를 해보니 저장 버튼을 눌러도 반응이 없어서 F12를 통해 에러를 확인해 보니 함수가 정의 되지 않았다는 엉뚱한 에러가 발생합니다.
php문 에서 넘기는 sql문을 어떻게 하면 찍어 볼 수 있을까요?
왜 스크립트 안의 php문에 echo문이나 print_r문을 명시하면 함수가 정의 되지 않았다는 엉뚱한 에러가 발생할 까요?
위의 함수 fmsubmit()안에 보시면
echo을 주석을 풀면 그림처럼 함수 fmsubmit가 선언되지 않았습니다. 라고 뜹니다.
주석을 하면 실행이 됩니다. 그래서 간단한 insert 1과 같은 문은 실행이 되고 있습니다.
(참고로 위의 캡쳐는 아래의 코드가 실행이 안되어서 원인을 찾기 위해 이것저것 하다가 캡쳐한 것이므로 아래의 코드와 완전히 다릅니다.)
다음은 제가 실행하려는 코드 입니다. sql문을 만들기 위해서 코드가 상당히 많이 긴점을 이해해 주십시오
<script type="text/javascript">
function fmSubmit()
{
//변수 값 불러오기 시작
Ca_name=document.getElementById("caName").value; //과제구분
wr_subject=document.getElementById("wr_subject"); // 과제명
wr_1=document.getElementById("wr_1"); //과제번호
wr_2=document.getElementById("wr_2"); //담당부서
wr_3=document.getElementById("wr_3"); //담당자
wr_4=document.getElementById("wr_4"); //진행현황
wr_5=document.getElementById("wr_5"); //진행률
// date= new date();
//변수값 불러오기 끝
alert("1");
<?php
// echo ("1-1");
$sql="insert g4_write_inno_task values (";
$sql=$sql+"0,"; // wr_num
$sql=$sql+"'',"; // wr_reply
$sql=$sql+"0,"; // wr_parent
$sql=$sql+"0," ; // wr_is_comment
$sql=$sql+"0," ; // wr_comment
$sql=$sql+"''," ; //wr_comment_reply
$sql=$sql+ca_name+"," ; //ca_name
$sql=$sql+"''," ; //wr_option
$sql=$sql+wr_subject+"," ; //wr_subject
$sql=$sql+"''," ; //wr_content
$sql=$sql+"''," ; //wr_link1
$sql=$sql+"''," ; //wr_link2
$sql=$sql+"0," ; //wr_link1_hit
$sql=$sql+"0," ; //wr_link2_hit
$sql=$sql+"'',"; //wr_trackback
$sql=$sql+"0,"; //wr_hit
$sql=$sql+"0," ; //wr_good
$sql=$sql+"0," ; //wr_nogood
$sql=$sql+"''," ; //mb_id
$sql=$sql+"''," ; //wr_password
$sql=$sql+"''," ; //wr_name
$sql=$sql+"'',"; //wr_email
$sql=$sql+"''," ; //wr_homepage
$sql=$sql+"curdate(),"; //wr_datetime
$sql=$sql+"'',"; //wr_last
$sql=$sql+"'',"; //wr_IP
$sql=$sql+wr_1+","; //wr_1 과제번호
$sql=$sql+wr_2+","; //wr_2 담당부서
$sql=$sql+wr_3+","; //wr_3 담당자
$sql=$sql+wr_4+","; //wr_4 진행현황
$sql=$sql+wr_5+","; //wr_5 진행률
$sql=$sql+"''"+","; //wr_6
$sql=$sql+"''"+","; //wr_7
$sql=$sql+"''"+","; //wr_8
$sql=$sql+"''"+","; //wr_9
$sql=$sql+"'$yearP'"; //wr_10 년도
$sql=$sql+")";
$result = mysql_query($sql);
print_r ($sql);
// echo ("1-2");
?>
alert("2");
// form = document.fmAdd;
//
// //if (!chkValue(form.title,'지표명을 입력하여 주십시오.')) return;
//
// form.target ='exectargetResult';
// form.action ='innotask_procExecc.html';
// alert("2");
// form.submit();
// alert("3");
}
</script>
!-->
답변 3
스크립트는 클라이언트 단에서 돌아가는 언어고
php는 서버단에서 돌아가는 언어입니다.
php가 다 돌아간 다음 -> 화면이 열리면서 -> 스크립트 언어돌아감
스크립트 언어 안에 php를 넣는다는것은..
아마 작성자님께서는 스크립트가 실행되면 php언어가 실행되게끔 하고싶으신것 같은데
말씀드린바와 같이 php언어는 이미 돌아갔고, 서버단에서만 돌아가니 스크립트 안에 넣어놔도 php는 돌아가지 않는것입니다.
작성자님께서 의도하신 바와 같이 하려면 블랙캣님께서 말씀하신 ajax를 이용하여 실시간으로 php파일을 실행하게끔 하셔야 합니다.
https://offbyone.tistory.com/196
이런글을 보시고 조금 공부하시거나 참고하시면 쉽게 구현가능 합니다.
해당 스크립트에 php랑 자바스크립트랑 혼동해서 쓰신거 같은데 ajax를 알아보시고 ajax로 필요한 정보르를 보내고 그 이후에 sql문을 php파일에서 다시 작성해보세요.
스크립트 내부에서 PHP를 혼용하면서 어떤 오류로 인해서 함수가 선언되지 않는것으로 보이는데요.
블랙캣님 말씀처럼 분류해서 사용하셔야 될것 같습니다.
저렇게 하면 나중에 본인 코드도 몰라보게 됩니다. 유지보수도 안되구요.