pg_query
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_query — Execute a query
설명
pg_query(PgSql\Connection $connection
= ?, string $query
): PgSql\Result|false
pg_query()는 지정된 데이터베이스 connection
에서 query
를 실행합니다. 대부분의 경우 pg_query_params()가 선호되어야 합니다.
오류가 발생하고 false
가 반환되면 연결이 유효한 경우 pg_last_error() 함수를 사용하여 오류의 세부 정보를 검색할 수 있습니다.
메모: connection
을 생략할 수도 있지만 스크립트에서 버그를 찾기 어려운 원인이 될 수 있으므로 권장하지 않습니다.
메모: 이 함수는 pg_exec()라고 불렸습니다. pg_exec()는 호환성을 위해 계속 사용할 수 있지만 사용자는 새 이름을 사용하는 것이 좋습니다.
매개변수
connection
- PgSql\Connection 인스턴스.
connection
을 지정하지 않으면 기본 연결이 사용됩니다. 기본 연결은 pg_connect() 또는 pg_pconnect()에 의해 만들어진 마지막 연결입니다. query
- 실행할 SQL 문. 여러 명령문이 함수에 전달되면 쿼리 문자열에 명시적인 BEGIN/COMMIT 명령이 포함되지 않는 한 자동으로 하나의 트랜잭션으로 실행됩니다. 그러나 하나의 함수 호출에서 여러 트랜잭션을 사용하는 것은 권장되지 않습니다.
경고 사용자 제공 데이터의 문자열 보간은 매우 위험하며 SQL injection 취약점으로 이어질 수 있습니다. 대부분의 경우 pg_query_params()가 선호되어야 하며, 사용자 제공 값을 쿼리 문자열로 대체하는 대신 매개변수로 전달해야 합니다.
쿼리 문자열로 직접 대체되는 사용자 제공 데이터는 적절하게 이스케이프되어야 합니다.
반환 값
성공 시 PgSql\Result 인스턴스, 실패 시 false
입니다.
변경 로그
버전 | 설명 |
---|---|
8.1.0 | 이제 PgSql\Result 인스턴스를 반환합니다. 이전에는 resource가 필요했습니다. |
8.1.0 | connection 매개변수는 이제 PgSql\Connection 인스턴스를 필요로 합니다. 이전에는 resource가 필요했습니다. |
Examples
예제 #1 pg_query() 예제
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
echo "An error occurred.\n";
exit;
}
$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
echo "An error occurred.\n";
exit;
}
while ($row = pg_fetch_row($result)) {
echo "Author: $row[0] E-mail: $row[1]";
echo "<br />\n";
}
?>
예제 #2 여러 명령문과 함께 pg_query() 사용
<?php
$conn = pg_pconnect("dbname=publisher");
// these statements will be executed as one transaction
$query = "UPDATE authors SET author=UPPER(author) WHERE id=1;";
$query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;";
$query .= "UPDATE authors SET author=NULL WHERE id=3;";
pg_query($conn, $query);
?>
기타
- pg_connect() - PostgreSQL 연결 열기
- pg_pconnect() - 영구 PostgreSQL 연결 열기
- pg_fetch_array() - 행을 배열로 가져오기
- pg_fetch_object() - 행을 객체로 가져오기
- pg_num_rows() - 결과의 행 수를 반환합니다.
- pg_affected_rows() - 영향을 받는 레코드(튜플)의 수를 반환합니다.