ایجاد، خواندن، بروزرسانی و حذف (CRUD) با PHP و PDO: راهنمای کامل و جامع


در دنیای برنامه‌نویسی وب، عملیات CRUD نقش بسیار مهم و حیاتی دارند. این عملیات، پایه و اساس هر سیستم مدیریت داده‌های دینامیک و تعاملی را تشکیل می‌دهند. به طور خاص، در توسعه برنامه‌های PHP، استفاده از PDO (PHP Data Objects) برای برقراری ارتباط با پایگاه داده، یک روش امن، قدرتمند و انعطاف‌پذیر است. در ادامه، قصد داریم به تفصیل درباره نحوه نوشتن یک اسکریپت PHP برای عملیات CRUD با PDO صحبت کنیم، و نکات مهم مربوط به امنیت، کارایی و نگهداری آن را مورد بررسی قرار دهیم.
مقدمه‌ای بر PDO و اهمیت آن در پروژه‌های PHP
PDO (PHP Data Objects) یک لایه انتزاعی برای ارتباط با پایگاه داده است، که امکان اجرای کوئری‌های امن و موثر را فراهم می‌آورد. بر خلاف روش‌های قدیمی‌تر مانند `mysql_connect()` یا `mysqli`, PDO از prepared statements بهره می‌گیرد که به شدت از حملات SQL Injection جلوگیری می‌کند. این ویژگی، به خصوص در پروژه‌هایی که بسترهای داده حساس دارند، اهمیت ویژه‌ای دارد.
علاوه بر این، PDO قابلیت پشتیبانی از چندین پایگاه داده مختلف، مانند MySQL، PostgreSQL و SQLite، را داراست، که این امر در توسعه برنامه‌های چندمنظوره بسیار مفید است. بنابراین، استفاده از PDO، نه تنها امنیت برنامه را تضمین می‌کند، بلکه انعطاف‌پذیری و قابلیت گسترش آن را نیز افزایش می‌دهد.
ساختار و طراحی اسکریپت CRUD با PDO
برای توسعه یک سیستم CRUD، ابتدا باید ساختار پایگاه داده را مشخص کنیم. فرض کنیم، یک جدول ساده به نام `users` داریم، که شامل فیلدهای زیر است:
- id (کلید اصلی، مقدار خودکار افزایشی)

- name (نام کاربر)

- email (ایمیل کاربر)

- age (سن کاربر)
حالا، باید چهار عملیات اصلی را پیاده‌سازی کنیم:
  1. ایجاد (Create)

  1. خواندن (Read)

  1. بروزرسانی (Update)

  1. حذف (Delete)
    در ادامه، هر کدام از این بخش‌ها را به صورت جداگانه و با کد نمونه توضیح می‌دهیم.
    ---

    اتصال به پایگاه داده با PDO




قبل از انجام هر عملیات، باید به پایگاه داده وصل شویم. این کار را با استفاده از کلاس PDO انجام می‌دهیم:
php  

<?php

try {

$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";

$username = "root";

$password = "";

$options = [

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,

];
$pdo = new PDO($dsn, $username, $password, $options);

} catch (PDOException $e) {

die("خطا در اتصال به پایگاه داده: " . $e->getMessage());

}

?>


در اینجا، ما از `try-catch` برای مدیریت خطاهای احتمالی استفاده کرده‌ایم، و تنظیمات مربوط به خطایابی و حالت پیش‌فرض fetch را هم مشخص کرده‌ایم.
---

عملیات CREATE (ایجاد رکورد جدید)




برای افزودن یک رکورد جدید، از `INSERT INTO` بهره می‌گیریم. مهم است که از prepared statements استفاده کنیم تا از حملات SQL Injection جلوگیری شود.
php  

<?php

// فرض بر این است که داده‌های کاربر از طریق فرم دریافت شده است

$name = "علی";

$email = "ali@example.com";

$age = 30;
try {

$stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (:name, :email, :age)");

$stmt->execute([

':name' => $name,

':email' => $email,

':age' => $age,

]);

echo "رکورد با موفقیت درج شد.";

} catch (PDOException $e) {

echo "خطا در درج رکورد: " . $e->getMessage();

}

?>


در این نمونه، پارامترهای متغیر را به صورت نام‌گذاری شده در کوئری قرار داده‌ایم و سپس با `execute()` مقداردهی کردیم.
---

عملیات READ (خواندن رکوردها)

... ← ادامه مطلب در magicfile.ir