응용개발

PHP에서 prepared statement 사용시 BIND 관련 팁

by Prototype posted Jun 30, 2009
다음과 같은 테이블이 있습니다.

     host_year            INTEGER NOT NULL
     host_nation          CHARACTER VARYING(40) NOT NULL
     host_city            CHARACTER VARYING(20) NOT NULL
     opening_date         DATE NOT NULL
     closing_date         DATE NOT NULL
     mascot               CHARACTER VARYING(20)
     slogan               CHARACTER VARYING(40)
     introduction         CHARACTER VARYING(1500)


PHP응용에서 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);

bind 를 할 경우, host_year 의 속성이 integer 이기 떄문에 numeric 형으로 바인드를 한 것을 볼 수 있습니다.
하지만, 꼭 numeric 형으로 바인드를 하지 않고, 다음과 같이 STRING 형으로 바인드를 하여도 무방합니다.

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

...

PHP에서 바인드를 할 경우, 스키마 상의 데이터 타입에 관계 없이 타입을 STRING 으로 하여 바인딩을 할 수 있습니다.