تبلیغات در اینترنت

تبلیغات در اینترنتگیفت کارت گوگل پلی
نمایش نتایج: از 1 به 1 از 1

موضوع: افزونه ی PDo

  1. Top | #1
    کاربر سایت

    تاریخ عضویت
    Apr 2011
    ورژن ویبولتین
    چهار دیواری اختیاری ، کاری داشتی؟ :f:
    نوشته ها
    666
    مورد پسند
    543 بار
    اطلاعات
    میزان امتیاز
    82

    پیش فرض افزونه ی PDo

    سلام دوستان...
    در این پست قصد دارم شما رو با یکی از افزونه های php آشنا کنم...

    PDO یک افزونه سبک و قدرتمند PHP برای برقراریه ارتباط با بانک اطلاعات است. این افزونه برروی نسخه های 5.1 به بالا تعبیه شده که امکانات اون به شرح زیر است:

    - پشتیبانی از بانک های اطلاعات متنوع مانند: MySQL، MsSQL و...
    - امکان تعویض بانک اطلاعات مورد استفاده
    - کنترل آسان خطاهای بانک اطلاعاتی موجود در php
    - پشتیبانی از Prepared Statement و Stored Procedure ها و Multiple Recordset.
    - هسته و برنامه آن با روش شی گرایی برنامه نویسی شده است


    PDO از 3 کلاس تشکیل شده:
    کلاس PDO: حاوی توابع اصلی برای اجرای کوئری، اتصال است.
    کلاس PDOStatement: حاوی توابع برای پردازش و بهره گیری از کوئری های اجرا شده است مثل fetch.
    کلاس PDOException: کنترل خطاهای رخ داده.



    *******************

    اتصال و اجرای کوئری

    برای اتصال به بانک اطلاعاتی به کمک این افزونه باید یک نمونه گیری کرد پس از کد زیر برای ارتباط به بانک اطلاعاتی استفاده می کنیم:

    کد PHP:
    $pdo = new PDO('mysql:dbname=mydatabase;host=localhost', 'db_username', 'db_password');

    این از ایجاد ارتباط... در این اتصال ما از بانک اطلاعات mysql استفاده کردیم و مشخصات این اطلاعات رو وارد کردیم/.

    اما برای اجرای دستورات باید از توابع اینکار استفاده کرد. اولین تابع مورد استفاده در این متد تابع query است. استفاده از این تابع باعث برگرداندن یک شی از کلاس PDOStatement می شود/.

    کد PHP:
    $stmt = $pdo->query("SELECT * FROM tables");

    در اینجا متغیر stmt همان متغیری است که در کلاس PDOStatement قرار دارد. اما پس از گرفتن اطلاعات از جداول نیاز به fetch کردن آنها برای استفاده است. برای اینکار از تابع ()fetch استفاده می کنیم:
    کد PHP:
    $row = $stmt->fetch();
    echo
    "Name: ".$row['name'];
    echo
    "Name: ".$row[1];
    echo
    "Age: ".$row['age'];
    echo
    "Age: ".$row[2];

    دست برنامه نویس در این متد باز است و می تواند آرایه خودش رو به شیوه های معمول مرتب کنه:

    کد PHP:
    $assoc_row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo
    "Name: ".$assoc_row['name'];
    echo
    "Age: ".$assoc_row['age'];

    $num_row = $stmt->fetch(PDO::PDO::FETCH_NUM);
    echo
    "Name: ".$num_row[1];
    echo
    "Age: ".$num_row[2];

    $obj_row = $stmt->fetch(PDO::PDO::FETCH_OBJ);
    echo
    "Name: ".$obj_row->name;
    echo
    "Age: ".$obj_row->age;

    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach(
    $rows as $row) {
    echo
    "Name: ".$row['name'];
    echo
    "Age: ".$row['age'];
    }

    در اینجا تابع آخر کار اضاف تری رو نسبت به بقیه توابع انجام می ده و اونم اینه که آرایه بدست آمده از این تابع اطلاعات سطرهای بوجود آمده و مقدار حافظه استفاده شده را نیز آزاد میکند.



    لازم است پس از fetch کردن، شی را پاک کنیم....
    برای اینکار می توانیم از دستورات زیر کمک بگیریم:

    کد PHP:
    $stmt = null;

    این دستور مقدار تهی را به متغیر حاوی کلاس می دهد و باعث تهی شدن این متغیر می شود.

    کد PHP:
    $stmt->closeCursor();

    این دستور باعث تخلیه حافظه اختصاص داده شده به این متغیر که حاوی کلاس PDOStatement می شود..

    اگر شما بخواهید مقدار برگشتی را fetch کنید.. در یک زمان نمی شود دو کوئری را fetch کرد و اگر اینکار را انجام دهیم تابع هیچ مقداری را صادر نمی کند...

    راه حل تعبیه شده در این کلاس استفاده از تابع fetchall است:
    کد PHP:
    $select = $pdo->query("SELECT id,name FROM parents");
    $parents = $select->fetchAll(PDO::FETCH_ASSOC);
    foreach(
    $parents as $parent) {
    // ...
    $stmt = $pdo->query("SELECT name FROM children WHERE parent=$parent[id]");
    $child = $stmt->fetch(PDO::FETCH_ASSOC);
    echo
    "Child is ".$child['name']; // Output: "Child is baby"
    // ...
    }

    این کار باعث میشود که ما دیگه از یک تابع برای دو پردازش استفاده نکنیم و تابع fetch همزمان در دو درخواست مورد پردازش قرار نمی گیرد و این پردازش بین تابع fetch و fetchall تقسیم میشود...


    تابع بعد که یک تابع مفید برای برنامه نویسی است تابع PDOStatement::fetchColumn است. این تابع مقدار یک ستون را بر می گرداند... اگر نام ستون برای تابع تعریف شود که همان ستون برگردانده می شود در غیر این صورت اولین ستون بر می گردد:
    کد PHP:
    $select = $pdo->query("SELECT id,name FROM parents");
    echo
    "ID: ".$select->fetchColumn();
    echo
    "Name: ".$select->fetchColumn(1);

    توابع مورد استفاده:

    در کار با بانک های اطلاعاتی توابع مفید دیگری مانند rowcount(), nextrowsert نیز هستند که آنها را بررسی می کنیم...

    تابع ()rowcount: این تابع زمانی مورد استفاده قرار می گیرد که بخواهیم تعداد ردیف های داده شده را بدست آوریم. این تابع مانند تابع mysql_num_rows عمل می کند.

    تابع ()nextrowset: این تابع هنگامی کاربرد دارد که کوئری ما تعدادی سطر را برگرادند.

    تابع مفید دیگری که برای اجرای درخواست های ما بکار می رود تابع exec می باشد. این تابع نیز همانند تابع query می باشد اما از تابع query سریعتر عمل می کند همچنین این تابع خروجی به ما نمی دهد و برای موقعی که نیاز به fetch کردن نداریم بهتر است:
    کد PHP:
    $num = $pdo->exec("UPDATE users SET level=1 WHERE age<19");
    echo
    $num ." user(s) were changed";

    در اینجا یک تابع بسیار مفید و پر کاربرد داریم که برای اجرای دستورات استفاده می شود. تابع prepare :

    پردازش و اجرای کوئری
    بررسی دستورات ورودی برای جلوگیری از حملات sql injection
    را انجام می دهد.
    برای کار با تابع نیازز نیست که دستورات را به دفعات بنویسیم فقط کافی است یکبار دستور مورد نظر را وارد کنیم سپس به هر تعداد که نیاز باشد آن را اجرا نماییم. این تابع یک شی برمی گرداند که منتظر اجراست!

    کد PHP:
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id");

    در این درخواست پارامتر ها با ":" مشخص شده اند و برای تعیین این پارامتر ها از دو تابع زیر استفاده می کنیم:

    کد:
    PDOStatementindParam PDOStatement:indValue
    کد PHP:
    $stmt = $pdo->prepare("SELECT age FROM users WHERE id=:id AND name=:name");
    $id = 5;
    $stmt->bindValue(':id', $id);
    $stmt->bindValue(':name', 'ُSilentDi3');

    اکنون فقط کافی است که این درخواست را اجرا کنیم:
    کد PHP:
    $stmt->execute();
    echo
    "Age is ".$stmt->fetchColumn();

    اگر بخواهیم این کوئری را با سرعت بالا و به دفعات اجرا کنیم به صورت زیر عمل می کنیم:
    کد PHP:
    $ids = array(1, 5, 4, 78, 9, 45, 6, 7);
    $stmt = $pdo->prepare("SELECT name FROM users WHERE id=:id");
    foreach(
    $ids as $id) {
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    echo
    "ID: $id , Age: ".$stmt->fetchColumn();
    }

    بجای اینکار نیز می توانیم query را در حلقه تکرار بکار ببریم که این مورد سرعت پردازش را بسیار کند می کند...


    باتشکر

    3 تشکر توسط:

    به دلیل مشکلات پیش آمده از کاربران عزیز تقاضا دارم به هیچ وجه به کاربری که از او شکایت شده است اعتماد نکنید و سعی کنید درخواست های خود را از مدیر کل و یا کاربران مورد اعتماد دیگر کنید و به هیچ وجه اعتمادی به بنده ی شکایت شده نداشته باشید! ( تا اطلاع ثانوی مشکوک، مسدود و مزنون می باشیم)
    با تشکر
    Vwolf

    وطن فروش اونایی هستن که هزار ساله سعی می کنن فرهنگ عرب های بادیه نشین رو جایگزین فرهنگ اصیل ایرانی کنن .
    این جا رو کلیک نکن !




  2. گیفت کارت آیتونز

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پرکاربردترین افزونه‌های وردپرس
    توسط parsa messi در انجمن پلاگین های وردپرس
    پاسخ: 3
    آخرين نوشته: 2011/06/03, 12:47 AM
  2. افزونه mingle.0.0.32 برای وردپرس+ فارسی ساز افزونه
    توسط parsa messi در انجمن پلاگین های وردپرس
    پاسخ: 0
    آخرين نوشته: 2011/03/30, 03:16 PM
  3. افزونه wp-forum برای وردپرس( افزونه راه اندازی فروم در وردپرس)
    توسط parsa messi در انجمن پلاگین های وردپرس
    پاسخ: 0
    آخرين نوشته: 2011/03/29, 09:49 PM
  4. مراحل نصب افزونه ها
    توسط parsa messi در انجمن پلاگین های وردپرس
    پاسخ: 1
    آخرين نوشته: 2011/03/29, 06:11 PM

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •