Connects using a DSN and returns a driver-specific PDO subclass when available.
The objective is to understand the behavior and operational limits, not only the method name.
What It Does
Connects using a DSN and returns a driver-specific PDO subclass when available.
Syntax and Return Value
PDO::connect(Parameter #0 [ <required> string $dsn ], Parameter #1 [ <optional> ?string $username = null ], Parameter #2 [ <optional> ?string $password = null ], Parameter #3 [ <optional> ?array $options = null ]): static
The return value and exceptional cases depend on the call described here: Available from PHP 8.4; never embed live credentials in source code.
The driver-specific PDO subclasses are available starting with PHP 8.4, except setAuthorizer, which starts with PHP 8.5.
Example 1: Basic Use
This self-contained SQLite example uses in-memory demo data; it requires the pdo_sqlite driver.
<?php
$db = PDO::connect("sqlite::memory:");
echo get_class($db);
Example 2: A Second Scenario
This self-contained SQLite example uses in-memory demo data; it requires the pdo_sqlite driver. This additional check distinguishes the method's result from connection or statement state.
<?php
$db = PDO::connect("sqlite::memory:");
echo get_class($db);
$newDb = PDO::connect("sqlite::memory:");
echo $newDb->getAttribute(PDO::ATTR_DRIVER_NAME);
Example 3: Practical Checks
This self-contained SQLite example uses in-memory demo data; it requires the pdo_sqlite driver. This additional check distinguishes the method's result from connection or statement state.
<?php
$db = PDO::connect("sqlite::memory:");
echo get_class($db);
$newDb = PDO::connect("sqlite::memory:");
echo $newDb->inTransaction() ? "active" : "idle";
Important Behavior and Edge Cases
Available from PHP 8.4; never embed live credentials in source code.
For production use, also account for error handling, data validation, resource limits and environment-specific driver behavior.
Comparison with Related Approaches
| Approach | Important distinction |
|---|---|
| PDO::connect | Connects using a DSN and returns a driver-specific PDO subclass when available. |
| Related API / pattern | new PDO also connects but may not return a driver-specific subclass. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming the happy path covers edge cases | Available from PHP 8.4; never embed live credentials in source code. |
| Using a related API interchangeably | new PDO also connects but may not return a driver-specific subclass. |
Key Takeaways
- Connects using a DSN and returns a driver-specific PDO subclass when available.
- Available from PHP 8.4; never embed live credentials in source code.
- new PDO also connects but may not return a driver-specific subclass.
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.