Skip to content

PHP PDO API

PHP Data Objects (PDO) — a uniform, object-oriented interface for accessing databases in PHP.

1 class · 7 methods

PDO

7 methods

Represents a connection between PHP and a database server, providing prepared statements and transactions.

PDO::__construct(string $dsn, ?string $username = null, ?string $password = null, ?array $options = null)

Creates a PDO instance representing a connection to a database via DSN.

Parameters

NameTypeDescription
dsnstringData Source Name (e.g. 'mysql:host=localhost;dbname=test').
username?stringDatabase username.
password?stringDatabase password.
options?arrayDriver-specific options.

Returns

void

Example

php
<?php
$pdo = new PDO(
    "mysql:host=localhost;dbname=test;charset=utf8mb4",
    "root",
    "secret",
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
PDO::query(string $query, ?int $fetchMode = null): PDOStatement|false

Executes an SQL statement, returning a result set as a PDOStatement. Use for non-parameterized queries.

Parameters

NameTypeDescription
querystringSQL statement to execute.
fetchMode?intOptional fetch mode.

Returns

PDOStatement|false

Example

php
<?php
$stmt = $pdo->query("SELECT id, name FROM users");
foreach ($stmt as $row) {
    echo $row["name"];
}
PDO::prepare(string $query, array $options = []): PDOStatement|false

Prepares a statement for execution and returns a PDOStatement object. Use for parameterized queries.

Parameters

NameTypeDescription
querystringSQL statement with placeholders.
optionsarrayDriver options.

Returns

PDOStatement|false

Example

php
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([":id" => 42]);
$user = $stmt->fetch();
PDO::beginTransaction(): bool

Turns off autocommit mode and begins a transaction. Changes are not committed until commit().

Returns

bool

Example

php
<?php
$pdo->beginTransaction();
try {
    $pdo->exec("UPDATE accounts SET bal = bal - 100 WHERE id = 1");
    $pdo->exec("UPDATE accounts SET bal = bal + 100 WHERE id = 2");
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
}
PDO::commit(): bool

Commits a transaction, making all changes since beginTransaction() permanent.

Returns

bool

Example

php
<?php
$pdo->beginTransaction();
$pdo->exec("INSERT INTO logs (msg) VALUES ('hi')");
$pdo->commit();
PDO::rollBack(): bool

Rolls back the current transaction, undoing all changes made since beginTransaction().

Returns

bool

Example

php
<?php
$pdo->beginTransaction();
$pdo->exec("DELETE FROM users WHERE id = 1");
$pdo->rollBack();  // DELETE is undone
PDO::lastInsertId(?string $name = null): string|false

Returns the ID of the last inserted row, or the last value from a sequence.

Parameters

NameTypeDescription
name?stringSequence name (some drivers like PostgreSQL).

Returns

string|false

Example

php
<?php
$pdo->exec("INSERT INTO users (name) VALUES ('Ann')");
$id = $pdo->lastInsertId();
echo $id;  // e.g. "42"