pg_query_params
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
pg_query_params — 서버에 명령을 제출하고 SQL 명령 텍스트와 별도로 매개변수를 전달할 수 있는 기능으로 결과를 기다립니다.
설명
pg_query_params(PgSql\Connection $connection
= ?, string $query
, array $params
): PgSql\Result|false
SQL 명령 텍스트와 별도로 매개변수를 전달할 수 있는 기능으로 서버에 명령을 제출하고 결과를 기다립니다.
pg_query_params()는 pg_query()와 비슷하지만 추가 기능을 제공합니다. 매개변수 값은 적절한 명령 문자열과 별도로 지정할 수 있습니다. pg_query_params()는 PostgreSQL 7.4 이상 연결에 대해서만 지원됩니다. 이전 버전을 사용할 때 실패합니다.
매개변수가 사용되면 query
문자열에서 $1, $2 등으로 참조됩니다. 동일한 매개변수가 query
에 두 번 이상 나타날 수 있습니다. 이 경우 동일한 값이 사용됩니다. params
는 매개변수의 실제 값을 지정합니다. 이 배열의 null
값은 해당 매개변수가 SQL NULL
임을 의미합니다.
pg_query()에 비해 pg_query_params()의 주요 이점은 매개변수 값이 쿼리 문자열에서 분리될 수 있으므로 지루하고 오류가 발생하기 쉬운 인용 및 이스케이프의 필요성을 피할 수 있다는 것입니다. pg_query()와 달리 pg_query_params()는 주어진 문자열에서 최대 하나의 SQL 명령을 허용합니다. (세미콜론이 있을 수 있지만 비어 있지 않은 명령은 하나만 사용할 수 있습니다.)
매개변수
connection
- PgSql\Connection 인스턴스.
connection
을 지정하지 않으면 기본 연결이 사용됩니다. 기본 연결은 pg_connect() 또는 pg_pconnect()에 의해 만들어진 마지막 연결입니다. query
- 매개변수화된 SQL 문. 하나의 문만 포함해야 합니다. (세미콜론으로 구분된 여러 문장은 허용되지 않습니다.) 매개변수를 사용하는 경우 $1, $2 등으로 지칭합니다.
사용자 제공 값은 쿼리 문자열에 삽입되지 않고 항상 매개변수로 전달되어야 하며, 여기에서 따옴표가 포함된 데이터를 처리할 때 잠재적인 SQL injection 공격 벡터를 형성하고 버그가 발생합니다. 어떤 이유로 매개변수를 사용할 수 없는 경우 보간된 값이 적절하게 이스케이프되었는지 확인하십시오.
params
- 원래 준비된 쿼리 문자열에서 $1, $2 등의 자리 표시자를 대체할 매개변수 값의 배열입니다. 배열의 요소 수는 자리 표시자의 수와 일치해야 합니다.
bytea 필드용 값은 매개변수로 지원되지 않습니다. 대신 pg_escape_bytea()를 사용하거나 대형 객체 함수를 사용하십시오.
반환 값
성공 시 PgSql\Result 인스턴스, 실패 시 false
입니다.
변경 로그
버전 | 설명 |
---|---|
8.1.0 | 이제 PgSql\Result 인스턴스를 반환합니다. 이전에는 resource가 반환되었습니다. |
8.1.0 | connection 매개변수는 이제 PgSql\Connection 인스턴스를 필요로 합니다. 이전에는 resource가 필요했습니다. |
Examples
예제 #1 pg_query_params() 사용
<?php
// Connect to a database named "mary"
$dbconn = pg_connect("dbname=mary");
// Find all shops named Joe's Widgets. Note that it is not necessary to
// escape "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));
// Compare against just using pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");
?>
기타
- pg_query() - 쿼리 실행