Executes a SQL string synchronously against the connection.
The objective is to understand the behavior and operational limits, not only the method name.
What It Does
Executes a SQL string synchronously against the connection.
Syntax and Return Value
pg_query(...)
The return value and exceptional cases depend on the call described here: Use pg_query_params rather than concatenating user input into SQL values.
Requirements: install and enable the corresponding PHP driver or extension and configure the service before running the examples.
Example 1: Basic Use
Requires a reachable PostgreSQL server and the pgsql PHP extension; asynchronous requests must be drained with pg_get_result.
<?php
$host = getenv('DB_HOST'); $user = getenv('DB_USER'); $password = getenv('DB_PASSWORD'); $database = getenv('DB_NAME');
if (!$host || !$user || $password === false || !$database) throw new RuntimeException('Missing PostgreSQL configuration');
$pg = pg_connect('host=' . $host . ' dbname=' . $database . ' user=' . $user . ' password=' . $password);
if (!$pg) { throw new RuntimeException('PostgreSQL connection failed'); }
$result = pg_query($pg,"SELECT 2 AS item_id");
echo pg_fetch_result($result,0,"item_id");
Example 2: A Second Scenario
Requires a reachable PostgreSQL server and the pgsql PHP extension; asynchronous requests must be drained with pg_get_result.
<?php
$host = getenv('DB_HOST'); $user = getenv('DB_USER'); $password = getenv('DB_PASSWORD'); $database = getenv('DB_NAME');
if (!$host || !$user || $password === false || !$database) throw new RuntimeException('Missing PostgreSQL configuration');
$pg = pg_connect('host=' . $host . ' dbname=' . $database . ' user=' . $user . ' password=' . $password);
if (!$pg) { throw new RuntimeException('PostgreSQL connection failed'); }
$result = pg_query($pg,"SELECT 4 AS item_id");
echo pg_fetch_result($result,0,"item_id");
Example 3: Practical Checks
Requires a reachable PostgreSQL server and the pgsql PHP extension; asynchronous requests must be drained with pg_get_result.
<?php
$host = getenv('DB_HOST'); $user = getenv('DB_USER'); $password = getenv('DB_PASSWORD'); $database = getenv('DB_NAME');
if (!$host || !$user || $password === false || !$database) throw new RuntimeException('Missing PostgreSQL configuration');
$pg = pg_connect('host=' . $host . ' dbname=' . $database . ' user=' . $user . ' password=' . $password);
if (!$pg) { throw new RuntimeException('PostgreSQL connection failed'); }
$result = pg_query($pg,"SELECT 6 AS item_id");
echo pg_fetch_result($result,0,"item_id");
Important Behavior and Edge Cases
Use pg_query_params rather than concatenating user input into SQL values.
For production use, also account for error handling, data validation, resource limits and environment-specific driver behavior.
Comparison with Related Approaches
| Approach | Important distinction |
|---|---|
| pg_query | Executes a SQL string synchronously against the connection. |
| Related API / pattern | pg_send_query queues asynchronous execution instead of blocking for a result. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming the happy path covers edge cases | Use pg_query_params rather than concatenating user input into SQL values. |
| Using a related API interchangeably | pg_send_query queues asynchronous execution instead of blocking for a result. |
Key Takeaways
- Executes a SQL string synchronously against the connection.
- Use pg_query_params rather than concatenating user input into SQL values.
- pg_send_query queues asynchronous execution instead of blocking for a result.
Choose this API or pattern when its exact semantics match your task, and verify the result against the database driver and runtime used by your application.