فصل چهارم: پایگاه داده و امنیت

اتصال به MySQL با PDO

ارتباط با پایگاه داده از طریق PDO

PDO (PHP Data Objects) یک لایه‌ی یکپارچه برای اتصال PHP به پایگاه‌های داده‌ی مختلف مانند MySQL، PostgreSQL و SQLite است. مزیت اصلی PDO نسبت به توابع قدیمی‌تر mysqli این است که کد شما مستقل از نوع دیتابیس می‌ماند و امکان استفاده از Prepared Statement را به‌سادگی فراهم می‌کند که در برابر SQL Injection مقاوم است.

برای اتصال به یک پایگاه‌داده‌ی MySQL:

<?php
$host = '127.0.0.1';
$db   = 'shop';
$user = 'root';
$pass = 'secret';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("خطا در اتصال: " . $e->getMessage());
}
?>

پس از برقراری اتصال می‌توانید کوئری‌های SELECT، INSERT، UPDATE و DELETE را اجرا کنید. برای خواندن داده‌ها:

$stmt = $pdo->query('SELECT id, name, price FROM products');

foreach ($stmt as $row) {
    echo $row['name'] . ' - ' . $row['price'] . "\n";
}

تنظیم ATTR_ERRMODE روی حالت Exception باعث می‌شود در صورت بروز خطا در کوئری، برنامه یک استثنا (Exception) پرتاب کند که می‌توانید آن را با try/catch مدیریت کنید، به‌جای اینکه خطا بی‌صدا نادیده گرفته شود. در درس بعدی نحوه‌ی درست ارسال پارامتر به کوئری‌ها و جلوگیری از حملات رایج را بررسی می‌کنیم.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.