pg_prepare
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
pg_prepare — 주어진 매개변수로 준비된 명령문 생성 요청을 제출하고 완료될 때까지 기다립니다.
설명
pg_prepare(PgSql\Connection $connection
= ?, string $stmtname
, string $query
): PgSql\Result|false
pg_prepare()는 pg_execute() 또는 pg_send_execute()를 사용하여 나중에 실행할 수 있도록 준비된 명령문을 생성합니다. 이 기능을 사용하면 반복적으로 사용되는 명령을 실행할 때마다가 아니라 한 번만 구문 분석하고 계획할 수 있습니다. pg_prepare()는 PostgreSQL 7.4 이상 연결에 대해서만 지원됩니다. 이전 버전을 사용할 때 실패합니다.
이 함수는 단일 SQL 명령을 포함해야 하는 query
문자열에서 stmtname
이라는 준비된 문을 만듭니다. stmtname
은 명명되지 않은 명령문을 생성하기 위해 ""일 수 있습니다. 이 경우 기존의 명명되지 않은 명령문이 자동으로 대체됩니다. 그렇지 않으면 명령문 이름이 현재 세션에 이미 정의되어 있으면 오류입니다. 매개변수가 사용되면 query
에서 $1, $2 등으로 참조됩니다.
pg_prepare()와 함께 사용할 준비된 문은 SQL PREPARE
문을 실행하여 만들 수도 있습니다. (단, pg_prepare()는 매개변수 유형을 미리 지정할 필요가 없기 때문에 더 유연합니다.) 또한, 준비된 문장을 삭제하는 PHP 함수는 없지만 SQL DEALLOCATE
문을 사용할 수 있습니다.
매개변수
connection
- PgSql\Connection 인스턴스.
connection
을 지정하지 않으면 기본 연결이 사용됩니다. 기본 연결은 pg_connect() 또는 pg_pconnect()에 의해 만들어진 마지막 연결입니다. stmtname
- 준비된 명령문을 제공할 이름입니다. 연결별로 고유해야 합니다. ""가 지정되면 이름 없는 명령문이 생성되어 이전에 정의된 이름 없는 명령문을 덮어씁니다.
query
- 매개변수화된 SQL 문. 하나의 문만 포함해야 합니다. (세미콜론으로 구분된 여러 문장은 허용되지 않습니다.) 매개변수를 사용하는 경우 $1, $2 등으로 지칭합니다.
반환 값
성공 시 PgSql\Result 인스턴스, 실패 시 false
입니다.
변경 로그
버전 | 설명 |
---|---|
8.1.0 | 이제 PgSql\Result 인스턴스를 반환합니다. 이전에는 resource가 반환되었습니다. |
8.1.0 | connection 매개변수는 이제 PgSql\Connection 인스턴스를 필요로 합니다. 이전에는 resource가 필요했습니다. |
Examples
예제 #1 pg_prepare() 사용
<?php
// Connect to a database named "mary"
$dbconn = pg_connect("dbname=mary");
// Prepare a query for execution
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
// Execute the prepared query. Note that it is not necessary to escape
// the string "Joe's Widgets" in any way
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));
// Execute the same prepared query, this time with a different parameter
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
?>
기타
- pg_execute() - 주어진 매개변수로 준비된 명령문을 실행하라는 요청을 보내고 결과를 기다립니다.
- pg_send_execute() - 결과를 기다리지 않고 주어진 매개변수로 준비된 명령문을 실행하라는 요청을 보냅니다.