آموزش PDO در PHP (عملیات CRUD)

  • آپدیت شده در تاریخ

آموزش PDO در PHP

در این مقاله آموزشی PDO در PHP درباره احرای عملیات CRUD کار با دیتابیس ، ساخت (Create) ، خواندن (Read) ، بروزرسانی (Update) و حذفDelete) مثال هایی را خواهیم دید .

در این مثال ، ما یک جدول posts برای انجام عملیات CRUD و کار با PDO در PHP داریم. اسکریپت SQL برای ساخت این جدول در سورس کد پایان این مقاله برای دانلود قرار داده شده است . ما یک اتصال PDO در فایل common ایجاد و این فایل را درجایی که نیاز به اتصال دیتابیس باشد include می کنیم.

آموزش PDO در PHP

ساخت اتصال دیتابیس با PDO در PHP

در کد زیر یک شئ از کلاس PDO ساختیم و در متغییر $pdo_conn ذخیره کرده ایم .

ساخت (Create) یک سطر جدید در جدول دیتابیس

کد زیر HTML را برای ساخت فرم و کد php را برای فراخوانی فایل اتصال به دیتابیس و انجام عملیات Create نمایش می دهد . با ارسال (submit) این فرم اطلاعات فیلد ها در یک سطر جدید اضافه می کند . این فرم ها برای ثبت یک خبر ، ثبت نام کاربر و ساخت فرم تماس با ما و… استفاده می شوند.

خواندن داده ها  از دیتابیس با PDO در PHP

بعد از ساختن یک سطر جدید در جدول دیتابیس ، قصد داریم همه اطلاعات سطر ها را با روش PDO در PHP بخوانیم (fetch) و در قالب یک لیست نمایش بدیم .

بروزرسانی سطرهای جدول دیتابیس

در فرم آپدیت ، ما مقادیر سطر خاصی را از دیتابیس خوانده و آنها را در فیلد های مشخص شده نمایش می دهیم . کد زیر به شما نحوه آپدیت یک سط از جدول را توسط PDO در PHP نمایش می دهد.

حذف سطر توسط PDO

کد زیر به شما نمایش می دهد چگونه یک سطر از جدول را حذف کنید

دیدید به چه راحتی از PDO در PHP برای تمام عملیات های مربوط به دیتابیس استفاده کردیم . استفاده از PDO برای پروژه هایتان میتوانید تا حد بسیار زیادی امنیت کار با دیتابیس ، راحتی و سرعت را بالا ببرد .

هر گونه مشکلی در پیاده سازی این کد ها داشتید از بخش نطرات در ارتباط باشید در کمترین زمان به سوالتان پاسخ داده خواهد شد .مرسی

موفق باشید

برای دانلود سورس کامل عملیات CRUD با PDO در PHP از قسمت زیر اقدام کنید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۴)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. Dude ۱۳ تیر ۱۴۰۱

    سلام.
    امکان ساخت دو current_timestamp() timestamp در دو زمان مختلف هست . وقتی اطلاعات وارد فیلد اول میشه هر دو زمان با هم ساخته میشه. راه دیگه ای هست بدون استفاده از ON UPDATE CURRENT_TIMESTAMP .

    پاسخ
  2. سیداسماعیل ۲۶ بهمن ۱۳۹۹

    سلام آقای شفیعی
    یه پست دارم که وقتی روش کلیک میشه میره صفحه سینگل پیج
    اما مطلب رو کامل نمی‌بره
    همش ازforeach خطا میگیره.

    پاسخ
    1. حسن شفیعی ۲۶ بهمن ۱۳۹۹

      سلام. در مورد نمایش اطلاعات پست وردپرس با php جستجو کنید حتما جایی رو اشتباه زدید
      آموزش : https://ghabchin.com/wordpress-template-files

      پاسخ
  3. Mohammad amin Salmani ۱ بهمن ۱۳۹۹

    سلام . من یک دیتابیس ایجاد کردم و روی utf8_persian_ci قرار دادم
    وقتی با phpmyadmin کار می کنم و دیتا ذخیره می کنم ، درست است ،
    ولی وقتی با php با PDO اتصال برقرار می کنم ، و کوئری را اجرا
    می کنم ، حروف فارسی به شکل “؟” می آید ولی حروف انگلیسی یه خوبی
    می آید .

    – خروجی رو print_r هم کردم و مطمئنم
    – نسخه php : 7.2.4 هست
    – وقتی همان کوئری رو با phpmyadmin اجرا می کنم به درستی می آید
    – مرورگر من chrome ، نسخه ۸۷ هست

    ممنون می شوم راهنایی کنید

    پاسخ
    1. حسن شفیعی ۱ بهمن ۱۳۹۹

      سلام.
      کانکشن دیتابیستون رو به اینصورت بسازید :
      $pdo_conn = new PDO( ‘mysql:host=localhost;dbname=DBNAME’, $database_username, $database_password ,
      array(PDO::MYSQL_ATTR_INIT_COMMAND => “SET NAMES utf8”));

      یعنی یک پارمتر بیشتر به نام array(PDO::MYSQL_ATTR_INIT_COMMAND => “SET NAMES utf8”) اضافه کنید تا مشکل اتصال utf8 حل بشه

      پاسخ
      1. محمد امین سلمانی ماهینی ۱ بهمن ۱۳۹۹

        خیلی ممنون ، مشکل رفع شد

        پاسخ
  4. nesyou ۲۶ خرداد ۱۳۹۹

    سلام من این کدو نوشتم کار نمیکنه چرا؟
    $sql = “INSERT INTO two (id, name , username ,password ) VALUES (NULL , ?, ?,?)”;
    $result = $connect->prepare($sql);
    $result->bindValue(1, $_POST[“name”]);
    $result->bindValue(2, $_POST[“username”]);
    $result->bindValue(3, $_POST[“password”]);
    $result->execute();

    پاسخ
    1. حسن شفیعی ۲۶ خرداد ۱۳۹۹

      سلام.
      یکبار خروحی result رو var_dump کنید ببینید اوکی هست یا نه.
      مقدار $_POST رو var_dump کنید تا مطمین بشید داده ای داخلش قرار داره یا خیر.
      همچنین خود کویری را به جای ? ها مقدار واقعی بزارید مثلا ‘testt’ و بعد داخل phpmyadmin اجرا کنید تا ببینید ثبت میشه یا خیر.

      پاسخ
  5. saeed sayad ۱۲ تیر ۱۳۹۷

    سلام وقت بخیر
    چطور میشه قبل از حذف تایید گرفت؟

    پاسخ
    1. حسن شفیعی ۱۲ تیر ۱۳۹۷

      سلام ممنون.
      میتونید از جاواسکریپت و دستور confirm استفاده کنید.

      موفق باشید.

      پاسخ
  6. حامد حیران یزدی ۲۹ خرداد ۱۳۹۷

    سلام.قبلا روی کامپیوتر خودم با دستور get_result کار میکردم و مشکلی نداشتم.حالا که روی هاست میخوام اجرا کنم خطا میده که این دستور تعریف نشده است.پشتیبانی سایت هم میگه مشکل از برنامه شما است.تو اینترنت که سرچ میکنم میگه مشکل از نصب یا فعال نبودن mysqlnd روی هاست است.لطفا راهنمایی کنین

    پاسخ
    1. حسن شفیعی ۲۹ خرداد ۱۳۹۷

      سلام . ورژن php رو چک کنید که روی ۵٫۳ به بالا باشد.
      موفق باشید.

      پاسخ
  7. Atena ۱۸ خرداد ۱۳۹۷

    سلام
    چرا در قسمت حذف کد pdo از $_get برای آیدی استفاده کردید این روش امن هست؟ دقیقا این کد👇

    $pdo_statement=$pdo_conn->prepare(“delete from posts where id=” . $_GET[‘id’]
    ممنون از توضیحات تون.

    پاسخ
    1. حسن شفیعی ۱۸ خرداد ۱۳۹۷

      سلام . خیر باید مقادیر رو با bindValue یا ‌bindParam به کویری اضافه کنید یا اینکه همان کد بالا رو استفاده کنید و با توابعی مثل intval مقدار عددی رو دریافت و استفاده کنید.

      موفق باشیذ.

      پاسخ
  8. saeed sayad ۱۶ خرداد ۱۳۹۷

    سلام من یه مشکلی دارم،زمانی که چند ردیف اظافه میکنم و کلی حذف یکی رو میزنم همه حذف میشن،ممکنه مشکل از اشتباه ساخته شدنid باشه؟

    پاسخ
    1. حسن شفیعی ۱۶ خرداد ۱۳۹۷

      سلام . هنگام ساخت ستون id باید تیک گزینه Auto increament رو بزنید تا خودکار با هر insert مقدارش +۱ و یکتا باشه.
      موفق باشید.

      پاسخ
      1. saeed sayad ۱۶ خرداد ۱۳۹۷

        میزنم اما ارور Query error:
        #۱۰۷۵ – Incorrect table definition; there can be only one auto column and it must be defined as a key میده

        پاسخ
      2. حسن شفیعی ۱۷ خرداد ۱۳۹۷

        احتمالا یک ستون دیگر رو auto increament قرار دادید. بهتره یکبار جدول رو پاک کنید و مجددا ستون ها رو بسازید و دقت کنید ستون id را primary key و بصورت Auto increment قرار بدید و بقیه ستون ها را نوع varchar و تعداد کاراکتر ها رو تعیین و ساخت رو بزنید . مطمینا مشکل حل میشه .
        موفق باشید.

        پاسخ
  9. saeed sayad ۱۵ خرداد ۱۳۹۷

    سلام وقت بخیر
    میشه یکم بیشتر توضیح بدید،الان اسم دیتابیس شما”blog_samples” انتخاب کردید،اسم جدولی که باید تو دیتابیس بسازیم چیه؟

    پاسخ
    1. حسن شفیعی ۱۵ خرداد ۱۳۹۷

      سلام ممنون.
      از کویری Insert مشخص است که چه جدولی باید ساخته بشه
      جدول : posts
      ستون های این جدول : id, post_title, description, post_at

      موفق باشید.

      پاسخ
      1. saeed sayad ۱۵ خرداد ۱۳۹۷

        تو جدولی که ساختیم id باید از چه نوعی باشه،یعنی type چی باید باشه،text,int,varcher?

        پاسخ
      2. حسن شفیعی ۱۵ خرداد ۱۳۹۷

        بصورت int و auto increament قرار بدید.

        پاسخ
  10. محمدجواد ۱۰ آبان ۱۳۹۶

    باسلام
    من برای شرکتی برنامه اندرویدی ساختم از من خواستن که با سیستم otp درون پرداخت برنامه ای ایجاد کنم
    ممکنه راهنمایی کنید
    باتشکر گل محمدی

    پاسخ
    1. حسن شفیعی ۱۰ آبان ۱۳۹۶

      سلام . پاسخ به ایمیل شما ارسال شد . موفق باشید

      پاسخ
دوره های آموزشی