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}'");

?>
                  
                

기타