Background Image
응용개발
2009.04.16 20:58

PHP에서 prepared statement 사용하기

조회 수 21455 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
일반적으로 PHP에서 CUBRID 를 사용한 질의를 사용할때는 다음과 같은 형식으로 사용합니다.

$qry = "select * from olympic where host_year=1988 and host_nation='Korea' ";
$result = cubrid_execute($con, $qry);
$row = cubrid_fetch($result);

이것을 Prepared statement 를 사용하도록 하면 다음과 같은 형식이 됩니다.
$HOST_YEAR = 1988;
$HOST_NATION = "Korea"

$qry = "select * from olympic where host_year= ? and host_nation= ? ";
$req = cubrid_prepare($con, $qry);
$res = cubrid_bind($req, 1, $HOST_YEAR, "NUMERIC");
$res = cubrid_bind($req, 2, $HOST_NATION, "STRING");
$result = cubrid_execute($req);
$row = cubrid_fetch($req);
....
if ($req > 0) cubrid_close_request($req);

주의 하셔야 할 점은, Prepared statement 를 사용 할 경우, fetch 시 result 값을 인자로 주는 것이 아니고, request handle 을 인자로 주어야 한다는 것입니다.

또한, 사용한 request handle은 반드시 cubrid_close_request 함수로 해제를 해 주어야 합니다.

  • ?
    박진호 2009.04.22 00:26
    prepare 기능에 output 변수 기능은 언제쯤 나올 수 있을까요?
  • ?
    brightest 2009.04.22 02:20
    사용하여 주셔서 감사합니다~^^. 해당 기능에 대하여 좀더 자세히 설명해 주실 수 있을까요? 기능 추가 여부는 해당 내용을 구체적으로 확인 및 검토 후 결정할 수 있을 것 같습니다~.
  • ?
    박진호 2009.05.05 09:20
    예전에 자료실에 올려놓은 글이 있습니다. 좀 오래된것인데요. ^^ 


    cubrid_prepare()와 cubrid_bind() 함수가 나오면서 php에 대해서도 많이 지원을 하는구나 생각했는데요. 
    out 변수를 받을 수 있는 형태가 없어서 윗 글과 비슷하게 만들어서 쓰고 있습니다. 

    아쉽게 프로시저를 사용할 때 output 변수는 따로 지정 할 수 있는 방법이 없는 것 같더라구여. 

    oracle 의 경우는 

    oci_bind_by_name() 함수로 변수를 지정할 수 있고 in, out 두 변수 모두 사용 할 수 있어서 따로 out 변수 지정을 하지는 않아도 out 변수를 받을 수 있습니다. 

    mssql 의 경우는 

    프로시저를 사용할 때 mssql_bind() 함수로 변수 지정을 하구여 out 변수 인지 아닌지는 

    bool mssql_bind ( resource $stmt , string $param_name , mixed &$var , int $type [, bool $is_output= false [, bool $is_null= false [, int $maxlen= -1 ]]] )

    $is_output 매개변수로 지정 할 수가 있습니다.  

    그래서 cubrid도 그런식으로 지원이 되었으면 좋지 않을까 하고 올려보았습니다. 

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
59 운영관리 CUBRID HA 구성 후 구동중인 slave/replica node에서 write 하기 정만영 2015.07.15 9044
58 질의작성 전체 테이블 UPDATE시 SELECT, UPDATE를 통한 INDEX SCAN방식으로 테이블 X_LOCK을 방지하자! file 이경오 2015.08.13 13802
57 운영관리 브로커 동적 파라미터 변경 방법 정만영 2015.08.13 7566
56 응용개발 WHERE 조건에서 다중 컬럼 IN절 처리 최적화 방법 (cubrid + ibatis) 1 이상신 2015.08.21 55143
55 질의작성 테이블 용량 산정 쿼리 성진 2015.12.08 7398
54 질의작성 오라클의 DBMS_RANDOM.STRING() 함수를 CUBRID 식으로 구현하는 방법 이경오 2015.12.08 7974
53 응용개발 maven에서 CUBRID JDBC Driver 추가하기 file 김승훈 2015.12.09 8947
52 운영관리 큐브리드 서비스 재구동 시 cubrid manager server start: fail 오류 해결 방법 진우진 2015.12.16 7735
51 운영관리 시스템 부하가 많지 않음에도 불구하고 질의 수행이 느린 경우 THP 기능 설정 확인 및 해제 진우진 2015.12.16 7529
50 질의작성 일정 범위 임의의 정수 생성 방법(random 함수 응용) 손승일 2015.12.22 6472
49 CUBRID 매니저 테이블 명세서 한 시트로 합치기 file 성진 2015.12.24 16527
48 마이그레이션 CM(CUBRID Manager)을 이용하여 행정표준코드시스템의 기관코드 가져오기 file 권호일 2015.12.28 6329
47 마이그레이션 CUBRID와 Oracle의 NULL과 '' (empty string)의 처리 차이점 1 권호일 2015.12.29 15430
46 운영관리 cubrid plandump ( plan cache정보확인) file 주현 2015.12.29 4300
45 응용개발 CUBRID HA 제약 사항 및 확인 방법 손승일 2015.12.29 5305
44 운영관리 브로커와 DB 간 연결 테스트 박동윤 2015.12.29 4934
43 질의작성 Cubrid는 어떤 쿼리를 동일한 쿼리로 판단할까? 이상신 2015.12.30 4011
42 운영관리 CUBRID BACKUP (linux, window) file 박동윤 2015.12.30 6249
41 마이그레이션 MySQL 테이블 크기 조사하기-공유 주현 2015.12.31 6206
40 응용개발 CUBRID DB에서 critical section 정보 출력하기 file 주현 2015.12.31 4602
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales