Returns a statement SQLSTATE and driver-specific error details.
The objective is to understand the behavior and operational limits, not only the method name.
What It Does
Returns a statement SQLSTATE and driver-specific error details.
Syntax and Return Value
PDOStatement::errorInfo(): mixed
The return value and exceptional cases depend on the call described here: Database errors may include schema details or values; log safely and hide from clients.
Example 1: Basic Use
The statement has a real query and result set; database-specific metadata and statement options may be unsupported.
<?php
$pdo = new PDO('sqlite::memory:', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT NOT NULL, price INTEGER NOT NULL, active INTEGER)');
$pdo->exec("INSERT INTO products (id,name,price,active) VALUES (1,'Desk',120,1),(2,'Lamp',35,1),(3,'Chair',85,0)");
$stmt = $pdo->prepare("SELECT name FROM products WHERE id = ?");
$stmt->execute([1]);
echo $stmt->errorInfo()[0] ?? "unknown";
Example 2: A Second Scenario
The statement has a real query and result set; database-specific metadata and statement options may be unsupported.
<?php
$pdo = new PDO('sqlite::memory:', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT NOT NULL, price INTEGER NOT NULL, active INTEGER)');
$pdo->exec("INSERT INTO products (id,name,price,active) VALUES (1,'Desk',120,1),(2,'Lamp',35,1),(3,'Chair',85,0)");
$stmt = $pdo->prepare("SELECT name FROM products WHERE id = ?");
$stmt->execute([2]);
echo $stmt->errorInfo()[0] ?? "unknown";
Example 3: Practical Checks
The statement has a real query and result set; database-specific metadata and statement options may be unsupported.
<?php
$pdo = new PDO('sqlite::memory:', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT NOT NULL, price INTEGER NOT NULL, active INTEGER)');
$pdo->exec("INSERT INTO products (id,name,price,active) VALUES (1,'Desk',120,1),(2,'Lamp',35,1),(3,'Chair',85,0)");
$stmt = $pdo->prepare("SELECT name FROM products WHERE id = ?");
$stmt->execute([3]);
echo $stmt->errorInfo()[0] ?? "unknown";
Important Behavior and Edge Cases
Database errors may include schema details or values; log safely and hide from clients.
For production use, also account for error handling, data validation, resource limits and environment-specific driver behavior.
Comparison with Related Approaches
| Approach | Important distinction |
|---|---|
| PDOStatement::errorInfo | Returns a statement SQLSTATE and driver-specific error details. |
| Related API / pattern | PDOStatement::errorCode returns just SQLSTATE. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming the happy path covers edge cases | Database errors may include schema details or values; log safely and hide from clients. |
| Using a related API interchangeably | PDOStatement::errorCode returns just SQLSTATE. |
Key Takeaways
- Returns a statement SQLSTATE and driver-specific error details.
- Database errors may include schema details or values; log safely and hide from clients.
- PDOStatement::errorCode returns just SQLSTATE.
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.