نمایش نتایج: از شماره 1 تا 8 , از مجموع 8

موضوع: هشدار جدی در مورد توابع دیتابیس php و اموزش PDO

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #5
    عضو انجمن
    تاریخ عضویت
    Jul 2012
    نوشته ها
    243
    تشکر تشکر کرده 
    88
    تشکر تشکر شده 
    478
    تشکر شده در
    173 پست

    پیش فرض پاسخ : هشدار جدی در مورد توابع دیتابیس php و اموزش PDO

    متد quote جایگزین تابع mysql_real_escape_string


    با استفاده از این متد میتوانید در برابر حملات sql injection برنامه خود را محافظت کنید

    دقت داشته باشید قبل از اجرای این کد باید charset را ست کنید

    برای utf-8 کد زیر را به کار ببرید
    کد PHP:
    $db->exec("SET NAMES utf8"); 


    خوب 2 ارگومان تابع دارد

    ارگومان اول متغیر ما هست

    ارگومان دوم که اختیاری هست نوع متغیر رو بیان میکند برای مثال PDO::PARAM_STR یا PDO::PARAM_INT یا PDO::PARAM_NULL



    به توصیه PHP هم دقت کنید

    you are strongly recommended to use PDO::prepare() to prepare SQL statement
    همانطور که ذکر کرده استفاده ازین تابع توصیه نمیشود و سرعت کمتری دارند، به جای اون استفاده از prepare پیشنهاد شده که در اینده اموزش داده خواهد شد


    هشدار: این تابع برای تمام نوع متغیر ها quotes ( علامت ' ) را در 2 طرف متغیر قرار میدهد و نیاز به قرار دادن ان در کوئری نیست !


    مثال :
    کد PHP:
    $unsafe "I'm Ali!"//متغیر مورد نظر
    $safe $db->quote($unsafe); //مقدار خروجی : 'I''m Ali!' 



    اجرای کوئری Query با PDO

    خوب قسمت اصلی دیتابیس مسلما اجرای دستورات هست
    3 متد برای اینکار در PDO موجود هست که به توضیح 2 متد در اینجا اکتفا میکنم


    1-متد exec

    این متد دستورات شما رو اجرا میکند و تعداد ردیف تحت تاثیر را برمیگرداند ( برای UPDATE , DELETE و CREATE )

    هشدار: این متد برای دستورات SELECT به هیچ وجه کاربرد ندارد

    هشدار2: این تابع در صورت مواجه با خطا مقدار FALSE را برمیگرداند، برای مقایسه برای جلوگیری از اشتباه شدن مقدار FALSE با 0 باید از ==! استفاده کنید به مثال توجه کنید


    کد PHP:
    if($db->exec($query) === false // درست
        
    echo 'خطا رخ داد';
    if(
    $db->exec($query) == false // نادرست
        
    echo 'خطا رخ داد';
    if(! 
    $db->exec($query) ) //نادرست
        
    echo 'خطا رخ داد'

    2-متد query

    در صورتی که مایل به اجرای دستورات SELECT هستید ( برای بقیه دستورات هم میتوانید از این متد استفاده کنید ) این متد کاربرد دارد

    دقت کنید خروجی این متد یک شئ دیگر هست به نام PDOStatement

    و برای پردازش اطلاعات باید اموزش این شی که در اینده مطرح خواهد شد را بخوانید

    یک دستور ساده


    کد PHP:
    $query "SELECT * FROM `users`";

    $result $db->query($query); 
    //$result یک شئ از نوع دیگر است
    print_r($result->fetchAll()); 

    در مورد متد fetchAll بعدا صحبت خواهد شد فعلا بدانید این متد تمام ردیف ها را برمیگرداند و متد fetch یک ردیف را


    3-متد prepare

    کار با این متد همانند متد قبلی هست ولی تفاوت هایی دارند که بعدا ذکر خواهد شد

    خروجی این متد یک شئ دیگر هست به نام PDOStatement

    فعلا بدانید مثال بالا را با prepare میتوان به این شکل اجرا کرد


    کد PHP:

    $query 
    "SELECT * FROM `users`";

    $result $db->prepare($query); 
    $result->execute(); // این خط اضافه شده است

    print_r($result->fetchAll()); 

  2. تعداد تشکر ها ازcooper47 به دلیل پست مفید


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

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

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

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

  1. مدیریت محتوای پردیس در نمایشگاه رسانه های دیجیتال 93
    توسط bazar30t در انجمن اسکریپت های دیگر
    پاسخ ها: 1
    آخرين نوشته: September 4th, 2014, 11:53
  2. پاسخ ها: 8
    آخرين نوشته: December 27th, 2012, 13:10
  3. پاسخ ها: 0
    آخرين نوشته: February 19th, 2012, 23:07
  4. چند روز پیش دیتابیس دایرکت ادمین هک شده ( همه توجه کنند)
    توسط kaywon در انجمن دايرکت ادمين DirectAdmin
    پاسخ ها: 5
    آخرين نوشته: June 14th, 2011, 10:45
  5. مدیریت محتواهای بدون دیتابیس flat-CMS
    توسط khudeman در انجمن دیگر سیستم ها
    پاسخ ها: 9
    آخرين نوشته: June 8th, 2010, 19:36

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

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