Sends a SQL statement for asynchronous execution.
The objective is to understand the behavior and operational limits, not only the method name.
What It Does
Sends a SQL statement for asynchronous execution.
Syntax and Return Value
pg_send_query(...)
The return value and exceptional cases depend on the call described here: Retrieve every pending result with pg_get_result before issuing new work.
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'); }
pg_send_query($pg,"SELECT 2 AS item_id");
while (($res = pg_get_result($pg)) !== false) echo pg_fetch_result($res,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'); }
pg_send_query($pg,"SELECT 4 AS item_id");
while (($res = pg_get_result($pg)) !== false) echo pg_fetch_result($res,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'); }
pg_send_query($pg,"SELECT 6 AS item_id");
while (($res = pg_get_result($pg)) !== false) echo pg_fetch_result($res,0,"item_id");
Important Behavior and Edge Cases
Retrieve every pending result with pg_get_result before issuing new work.
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_send_query | Sends a SQL statement for asynchronous execution. |
| Related API / pattern | pg_query blocks until a synchronous query completes. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming the happy path covers edge cases | Retrieve every pending result with pg_get_result before issuing new work. |
| Using a related API interchangeably | pg_query blocks until a synchronous query completes. |
Key Takeaways
- Sends a SQL statement for asynchronous execution.
- Retrieve every pending result with pg_get_result before issuing new work.
- pg_query blocks until a synchronous query completes.
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.