تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: فرق بین mysql_fetch_row و mysql_affected_rows در پراسس

  1. #1
    کاربر فعال انجمن موسیقی David.Jn's Avatar
    تاريخ عضويت
    Jul 2007
    پست ها
    2,070

    پيش فرض فرق بین mysql_fetch_row و mysql_affected_rows در پراسس

    سوال همه چیرو میرسونه
    ولی یه توضیح هم میدم این دو تابع روی سرور کدومشون بیشترین پراسس رو دارن.
    Last edited by David.Jn; 27-01-2009 at 20:35.

  2. #2
    حـــــرفـه ای neopersia's Avatar
    تاريخ عضويت
    Oct 2006
    پست ها
    3,580

    پيش فرض

    داوود جان گمونم سوء تفاهم شده!
    این دو تا ربطی به هم ندارن که بشه مقایسه کرد.
    اولی میاد داده های اون سطری از ریسورس استخراج شده از دیتابیس رو که پویینتر در اون سطره به صورت یک آرایه بر میگردونه
    دومی هم تعداد سطرهای دیتابیس رو که آخرین کوئری فرستاده شده به دیتابیس روی اونا اثر گذاشته بر میگردونه

  3. #3
    حـــــرفـه ای neopersia's Avatar
    تاريخ عضويت
    Oct 2006
    پست ها
    3,580

    پيش فرض

    داوود جان گمونم سوء تفاهم شده!
    این دو تا ربطی به هم ندارن که بشه مقایسه کرد.
    اولی میاد داده های اون سطری از ریسورس استخراج شده از دیتابیس رو که پویینتر در اون سطره به صورت یک آرایه بر میگردونه
    دومی هم تعداد سطرهای دیتابیس رو که آخرین کوئری فرستاده شده به دیتابیس روی اونا اثر گذاشته بر میگردونه

  4. این کاربر از neopersia بخاطر این مطلب مفید تشکر کرده است


  5. #4
    کاربر فعال انجمن موسیقی David.Jn's Avatar
    تاريخ عضويت
    Jul 2007
    پست ها
    2,070

    پيش فرض

    داوود جان گمونم سوء تفاهم شده!
    این دو تا ربطی به هم ندارن که بشه مقایسه کرد.
    اولی میاد داده های اون سطری از ریسورس استخراج شده از دیتابیس رو که پویینتر در اون سطره به صورت یک آرایه بر میگردونه
    دومی هم تعداد سطرهای دیتابیس رو که آخرین کوئری فرستاده شده به دیتابیس روی اونا اثر گذاشته بر میگردونه
    ممنون
    نه بابا سوء تفاهم کیلو چنده
    میدونم هیچ ربطی به هم ندارن ولی تو یه جایی مثل هم کار میکنن
    مثل فهمیدن اینکه آیا کوئری گرقته شده خروجی داشته یا نه(خروجیش یدونه باشه نه آرایه چندتایی مثل سیستم ثبت نام کاربران برای فهمیدن اینکه کاربری با این نام ثبت شده یا نه)

    خودم فکر میکنم mysql_fetch_row بیشتراز اون یکی پراسس داشته باشه (نمیدونم نظر شما چیه)

  6. #5
    حـــــرفـه ای neopersia's Avatar
    تاريخ عضويت
    Oct 2006
    پست ها
    3,580

    پيش فرض

    نه دیگه اینا فقط تو یه مورد میتونن با هم مشابه باشن (از نظر کاربرد) اونم برای مشخص کردن تعداد سطری هست که اینسرت میشه
    وگرنه تو بقیه موارد نمیشه تعداد سطر رو از fetch_row مشخص کرد (اگرم بشه مثلاً با سلکت کردن اون موقع دیگه affected_rows مقداری رو برنمیگردونه)
    توی دلیت و آپدیت هم که تعداد سطر رو فقط با affected_rows میشه مشخص کرد نه با شمردن خروجی! چون اصلاً خروجی قابل شمردن نداره


    در کل استفاده از fetch_row اصلاً ربطی به مشخص کردن نتیجه کوئری نداره

  7. این کاربر از neopersia بخاطر این مطلب مفید تشکر کرده است


  8. #6
    کاربر فعال انجمن موسیقی David.Jn's Avatar
    تاريخ عضويت
    Jul 2007
    پست ها
    2,070

    پيش فرض

    در کل استفاده از fetch_row اصلاً ربطی به مشخص کردن نتیجه کوئری نداره
    یاسر خداییش گرفتی ما رو؟!
    بابا من همه اینارو میدونم
    میخوای یه تاپیک با هم بزنیم واسه آموزش توابع مربوط به mysql

    من در کل میخوام بدونم fetch_row بیشترین پردازش سمت سرور داره یا affected_rows
    اصلآ با نحوه استفاده یا جایی که استفاده میشه کاری ندارم.

    حالا میخوام بهت نشون بدم که بعضی مواقع میشه واسه نتیجه کوئری هم از fetch_row استفاده کرد
    تو فرض کن ما یه سیستم لاگین داریم
    حالا واسه چک کردن اینکه آیا کاربری با این نام و با این پسورد وجود داره یا نه میشه بعد از کوئری گرفتن اینجوری نوشت که :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خوب این if میاد چک میکنه که آیا خروجی کوئری که یک آرایه هست مقداری داره یا تهی

    حالا با affect:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حتی با تابع mysql_num_row هم میشه این کار رو انجام داد
    Last edited by David.Jn; 29-01-2009 at 23:25.

  9. #7
    حـــــرفـه ای neopersia's Avatar
    تاريخ عضويت
    Oct 2006
    پست ها
    3,580

    پيش فرض

    خوب عزیز دل برادر من که گفتم فقط تو یه مورد میشه از fetch_row برای این که ببینیم نتیجه ای توی کوئری بوده یا نه استفاده کرد اون یه مورد هم فقط مقدار برگردونده شده از SELECT هست!
    اصلاً هم کار fetch_row این نیست که نتیجه رو مشخص کنه. کاری که میکنه اینه که در صورتی که توی سطری که پویینتر ریسورس گرفته شده از دیتابیس قرار داره یک سطر از اطلاعات وجود داشته باشه، اون سطر رو به صورت یک آرایه استخراج میکنه در غیر این صورت هم false بر میگردونه! در ضمن پویینتر رو هم بعد از هر بار fetch کردن یکی جلو میبره!

    حالا اون شرطی هم که نوشتی میاد اون آرایه رو تبدیل میکنه به بولین و اون مقدار بولی رو ارزیابی میکنه! یعنی کلی کار بیخوری این وسط انجام میشه! هم دیتابیس mysql رو میزاری سر کار و هم php رو
    اولاً mysql مجبور میشه داده ها رو بخونه و برات بفرسته به php
    ثانیاً php مجبوره اون سطر رو بخونه و از ریسورس تبدیل کنه به آرایه که حالا تعداد عضوهاشم بستگی به سلکتت داره! بعدشم مجبوره اون آرایه رو برای شرط تبدیل کنه به بولین!

    در ضمن در مورد SELECT فکر نمیکنم affected_rows مقداری رو برگردونه ها!! آخه تغییری تو دیتابیس ایجاد نمیشه که بخواد تعداد سطرهای تحت تأثیر قرار گرفته رو برگردونه!

    برای همچین کارایی اگه خواستی از طریق تعداد سطرها عمل کنی بهتره از mysql_num_rows استفاده کنی که دقیقاً تعداد سطرهای انتخاب شده رو بر میگردونه.

    یا اینکه اصلاً نام کاربری رو بفرستی به mysql و کلمه عبور اون رو select کنی و تو php اونو با کلمه عبور وارد شده مقایسه کنی (من این روش رو بیشتر دوست دارم!)

    یه راه دیگه هم اینه که نام کاربری و کلمه عبور رو بفرستی به دیتابیس و همونجا تعداد سطرهای موجود با اون مشخصات رو بشمری و فقط تعداد سطرها رو سلکت کنی (اینم روش بدی نیست ) :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    تو این روشها اونی که خودت میگفتی بیشتر از همه پدر سرور رو در میاره بعدش روش اولی هست که من گفتم. اون دو تای آخر به نظرم کمتر فشار بیاره اما بازم بستگی به استوریج انجینی هست که برای جدول انتخاب کردی و همینطور اینکه کدوم فیلدها ایندکس شده باشن!

  10. #8
    کاربر فعال انجمن موسیقی David.Jn's Avatar
    تاريخ عضويت
    Jul 2007
    پست ها
    2,070

    پيش فرض

    خوب عزیز دل برادر من که گفتم فقط تو یه مورد میشه از fetch_row برای این که ببینیم نتیجه ای توی کوئری بوده یا نه استفاده کرد اون یه مورد هم فقط مقدار برگردونده شده از SELECT هست!
    اصلاً هم کار fetch_row این نیست که نتیجه رو مشخص کنه. کاری که میکنه اینه که در صورتی که توی سطری که پویینتر ریسورس گرفته شده از دیتابیس قرار داره یک سطر از اطلاعات وجود داشته باشه، اون سطر رو به صورت یک آرایه استخراج میکنه در غیر این صورت هم false بر میگردونه! در ضمن پویینتر رو هم بعد از هر بار fetch کردن یکی جلو میبره!

    حالا اون شرطی هم که نوشتی میاد اون آرایه رو تبدیل میکنه به بولین و اون مقدار بولی رو ارزیابی میکنه! یعنی کلی کار بیخوری این وسط انجام میشه! هم دیتابیس mysql رو میزاری سر کار و هم php رو
    اولاً mysql مجبور میشه داده ها رو بخونه و برات بفرسته به php
    ثانیاً php مجبوره اون سطر رو بخونه و از ریسورس تبدیل کنه به آرایه که حالا تعداد عضوهاشم بستگی به سلکتت داره! بعدشم مجبوره اون آرایه رو برای شرط تبدیل کنه به بولین!
    ولی من دیدم که بعضیا اینکار رو با fetch_row انجام دادن (^_^)

    پس پردازش mysql_fetch بیشتره . چون داره fetch میکنه.
    اینجا به بچه ها باید بگیم که از این تابع برای عضو گیری نباید استفاده کنن.

Thread Information

Users Browsing this Thread

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

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •