PDA

View Full Version : گفتگو: فرق اینها باهم چیه؟



sargardoon
سه شنبه 09 فروردین 1390, 16:01 عصر
سلام دوستان،
میخواستم بدونم فرق اینها باهم چیه؟

mysql و mysqli


include()
include_once()
require()
require_once()


ممنونم میشم فرق هرکدام، مزیت و معایب آنها را بنویسید.

شرمنده عنوان بهتری به ذهنم نرسید، اگر برای این موضوع عنوان مناسبی سراغ دارید لطفا اینجا بنویسید

رضا قربانی
سه شنبه 09 فروردین 1390, 20:09 عصر
هردوتا یک کار رو انجام میدن ، اما
موقع استفاده از include اگر فایل ضمیمه شده وجود نداشته باشه یا به هر دلیل مشکل داشته باشه ، ادامه ی کد بدون مشکل اجرا میشه !
موقع استفاده از require اگر فایل ضمیمه شده وجود نداشته باشه یا به هر دلیل مشکل داشته باشه ، اجرای کد همونجا متوقف میشه و ادامه داده نمیشه !

استفاده از include_once و requre_once باعث میشه که فایل مورد نظر فقط یکبار ضمیمه بشه !
یعنی اگر قبلا همون فایل ضمیمه شده باشه دوباره ضمیمه نمیشه ... !

mysqli تا حالا استفاده نکردم

MMSHFE
سه شنبه 09 فروردین 1390, 20:26 عصر
mysql مربوط به پايگاه داده MySQL و mysqli مربوط به پايگاه داده SQLite هست كه خيلي ساده تر هست و براي ذخيره سازي اطلاعات، از فايل استفاده ميكنه ولي Queryهاي SQL توي اون قابل اجرا هستن. البته بايد دقت كنيد كه به دليل استفاده از فايلهاي خام، سرعت بسيار كمتري از MySQL داره و صرفاً براي كارهاي سبك و پايگاههاي داده كم حجم مناسبه.
include و require هر دو براي ضميمه كردن يك فايل به كار ميرن ولي تفاوتي كه دارن در اينه كه اگه از include استفاده كنيد و به هر دليل نتونه فايل رو ضميمه كنه (مثلاً نام فايل رو اشتباه دادين يا فايل حذف شده باشه)، بقيه كد اجرا ميشه (البته نه بدون مشكل!) و يك WARNING توليد ميشه ولي اگه از require استفاده كنيد، اگه نتونه فايل رو ضميمه كنه، بقيه كد اجرا نميشه و يك FATAL ERROR توليد ميشه. بنابراين از include براي ضميمه كردن كدهاي غيرضروري استفاده كنيد (مثلاً اگه كدي دارين كه وضعيت آب و هوا رو نمايش ميده، ميشه با require ضميمه اش كرد چون اگه Load نشه، باز هم سايت ميتونه كار كنه ولي اگه فايلي دارين مثل config.php كه تنظيمات سايتتون توشه (مثل نام سرور و نام كاربري و رمز عبور پايگاه داده ها و...) بهتره از require‌ استفاده كنيد چون اگه اين فايل به درستي ضميمه نشه، كليه دستورات كار با پايگاه داده ها و... به مشكل بر ميخورن و بهتره كه سايت اصلاً بارگذاري نشه. نسخه اي از اين دو دستور هم وجود داره كه پسوند once_ بهش اضافه شده. اين دستورات مشابه نسخه بدون once_ كار ميكنن با اين تفاوت كه اگه فايل مربوطه قبلاً ضميمه شده باشه، ديگه ضميمه نميشه. مثلاً فرض كنيد شما يك فايل دارين به نام db.php و يك فايل به نام config.php و يك فايل به نام index.php كه توي index.php هر دو فايل db.php و config.php رو با require_once ضميمه كردين. ازطرفي توي فايل db.php هم فايل config.php رو require_once كردين. حالا با اين اوصاف، موقع نمايش index.php از اونجا كه فايل config.php قبلاً توسط db.php ضميمه شده، ديگه دوباره ضميمه نميشه. در اكثر موارد ضميمه كردن مجدد مشكلي پيش نمياره. بخصوص اگه فايل ضميمه شده فقط حاوي تعريف چند تا متغير و... باشه ولي اگه يك كلاس، تابع يا چيز ديگري توش تعريف كرده باشين، ضميمه كردن مجدد مساوي است با تعريف مجدد تابع كه باعث ميشه دو تابع با يك نام تعريف بشن و موجب توليد خطا ميشه. بنابراين بهتره اين جور مواقع از require_once استفاده كنيد.
اميدوارم خوب توضيح داده باشم.
موفق باشيد.

sargardoon
سه شنبه 09 فروردین 1390, 22:33 عصر
پس میشه اینطوری نتیجه گرفت که require_once بهتر از بقیه هستش.
یک سوال آیا بهتر نیست قبلا از ضمیمه کردن چک کنی ایا فایل وجود داره یا نه؟ تا از اون پیغامهایی که کاربران را به ترس میاندازه جلوگیری بشه و user friendly باشه.

در مورد mySQLi تا جایی که من مطالعه کردم و فهمیدم ورژن جدید mySQL هستش و سریعتر از mysql هستش و امکانات بیشتری نسبت به آن داره، که یکی از امکانات آن ی پیشتبانی از شی گرایی می باشد.

Object-oriented interface
Support for Prepared Statements
Support for Multiple Statements
Support for Transactions
Enhanced debugging capabilities
Embedded server support

برای اطلاعات بیشتر میتونید به سایت PHP مراجعه کنید
http://uk3.php.net/manual/en/mysqli.overview.php

به این سایت هم سر بزنید مطالب جالبی داره
http://af-design.com/blog/2009/01/30/php-mysql-vs-mysqli-database-access-metrics/

MMSHFE
سه شنبه 09 فروردین 1390, 22:49 عصر
با سلام، بله ميشه با file_exists بررسي كرد كه فايل وجود داره يا نه ولي صحبت سر اينه كه كدهاي غيرضروري رو ميشه با include ضميمه كرد كه اگه به هر دليلي ضميمه نشد، بقيه سايت كار كنه. حقيقتش من خودم قبلاً از mysqli براي كار با SQLite استفاده ميكردم ولي الآن كه بررسي كردم، ديدم با يكسري تنظيمات ميشه مثل PDO براي كار با MySQL هم ازش استفاده كرد. فقط بايد دقت كنيد كه سرعت توابع mysql بيشتر از mysqli هست. البته احتمالاً در نسخه بعدي با توجه به اينكه mysql فقط در حد نگهداري پشتيباني ميشه و mysqli درحال توسعه است، اين مشكل هم برطرف خواهد شد. بنابراين بهتره كم كم دوستان به فكر انتقال به اين سمت باشن.
ممنون بابت اطلاع رساني مفيدتون.
موفق باشيد.

mamali-mohammad
سه شنبه 09 فروردین 1390, 23:35 عصر
آقا من یه مشکلی دارم
وقتی که include_once که میکنم ، قالب توی دریم خراب میشه اما در مرورگ درست کار میکنه
برای همین یه echo قبلش میزارم که باعث میشه شماره 1 بیاد تو قالب !
این مشکل چطوری رفع کنم ؟
ممنون

MMSHFE
سه شنبه 09 فروردین 1390, 23:47 عصر
با سلام، بايد كد رو ببينيم. نميشه همينطوري قضاوت كرد. بايد ببينيم مشكل از كجاست.
موفق باشيد.

sargardoon
سه شنبه 09 فروردین 1390, 23:58 عصر
با سلام، بله ميشه با file_exists بررسي كرد كه فايل وجود داره يا نه ولي صحبت سر اينه كه كدهاي غيرضروري رو ميشه با include ضميمه كرد كه اگه به هر دليلي ضميمه نشد، بقيه سايت كار كنه. حقيقتش من خودم قبلاً از mysqli براي كار با SQLite استفاده ميكردم ولي الآن كه بررسي كردم، ديدم با يكسري تنظيمات ميشه مثل PDO براي كار با MySQL هم ازش استفاده كرد. فقط بايد دقت كنيد كه سرعت توابع mysql بيشتر از mysqli هست. البته احتمالاً در نسخه بعدي با توجه به اينكه mysql فقط در حد نگهداري پشتيباني ميشه و mysqli درحال توسعه است، اين مشكل هم برطرف خواهد شد. بنابراين بهتره كم كم دوستان به فكر انتقال به اين سمت باشن.
ممنون بابت اطلاع رساني مفيدتون.
موفق باشيد.
قابلی نداشت، امیدوارم به درد دیگر دوستان هم بخوره،
منظور من برای این بود برای اینکه سایت کمتر باگ داشته باشه، بهتره حداقل فایل چک بشه که آیا وجود داره یا نه، با همون روشی که شما ذکر کردید.
در رابطه با include اوایل که نمیدوستم یه بار در یه صفحه دوباره باز نوشته بودم چون فایل تابع بود به مشکل برخوردم ولی وقتی از include_once استفاده کردم مشکلی بهم نزد، این رو فقط میدونستم ولی نمیدونستم به چه درد میخوره، از توضیحات شما استفاده بردم، باز ممنونم

Mr.Moghadam
چهارشنبه 10 فروردین 1390, 01:01 صبح
آقا من یه مشکلی دارم
وقتی که include_once که میکنم ، قالب توی دریم خراب میشه اما در مرورگ درست کار میکنه
برای همین یه echo قبلش میزارم که باعث میشه شماره 1 بیاد تو قالب !
این مشکل چطوری رفع کنم ؟
ممنون

فایلی رو که اینکلود میکنین اگر پسوند html داشته باشه توی دریم ویور خراب نشون میده و به هم میریزه.
برای رفع این مشکل پسند فایلتون رو .php بزارید