Prepared Statements
Prepared statements separate SQL from data, preventing SQL injection. Use prepare() and execute() with placeholders.
Prepared statements separate SQL from data, preventing SQL injection. Use prepare() and execute() with placeholders.
<?php
// Named placeholders (recommended)
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email AND active = :active");
$stmt->execute(["email" => $email, "active" => 1]);
$user = $stmt->fetch();
// Positional placeholders
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);
// Reuse prepared statement in a loop
$stmt = $pdo->prepare("INSERT INTO logs (level, message) VALUES (?, ?)");
foreach ($logs as $log) {
$stmt->execute([$log["level"], $log["message"]]);
}
Named placeholders (:name) are more readable than positional (?) and immune to parameter reordering mistakes.