article

آموزش MySQL، سیستم مدیریت پایگاه داده

mysql

ذخیره اطلاعات به صورت دسته بندی شده و دسترسی سریع به آنها ضرورتی بود که باعث ایجاد سیستم های مدیریت پایگاه داده رابطه ای (Relational Database Management System یا به اختصار RDBMS) در دنیای برنامه نویسی و به تبع برنامه نویسی وب شد، اگر یک برنامه نویس PHP باشیم و بخواهیم به طور مثال سرویس فرهنگ لغات آنلاین طراحی کنیم، قاعدتا اولین مشکلی که با آن روبرو خواهیم شد این است که لغات را در کجا ذخیره و چگونه آنها را فراخوانی کنیم، چگونه کلمه مورد نظر کاربر را از بین کلمات موجود جستجو کرده و نتیجه را پس از پردازش به صفحه مرورگر ارسال نمائیم و سوالاتی از این دست، لذا ناگزیر بحث استفاده از یک سیستم مدیریت پایگاه داده جهت ذخیره، جستجو، انتخاب، ویرایش و حذف اطلاعات مطرح می شود که در وب و بخصوص برای برنامه نویسان PHP اولین و شاید بهترین انتخاب MySQL باشد، اینکه چرا و چگونه از MySQL در کدنویسی PHP خود استفاده کنیم، مبحثی است که در سلسله آموزش های مقدماتی پیش رو به آن خواهیم پرداخت.

MySQL چیست و چه کاربردی دارد؟


قبل از هر چیز بهتر است به این سوال پاسخ دهیم که MySQL چیست و چه کاربردی دارد؟ در پاسخ می توان گفت که MySQL یکی از پرکاربردترین سیستم های متن باز (Open-source) مدیریت پایگاه داده است که توسط شرکت سوئدی MySQL AB ایجاد و اولین نسخه آن در سال 1995 معرفی شد (مالکیت شرکت MySQL AB در حال حاضر در اختیار شرکت Oracle است)، SQL در واقع زبانی است که برای استفاده در سیستم های مدیریت پایگاه داده رابطه ای (RDBMS) طراحی شده و عبارت MySQL اشاره به این زبان دارد، در واقع MySQL برای اجرای دستورات ما مانند دستور ساخت جدول، ذخیره، جستجو، انتخاب، ویرایش و حذف اطلاعات از زبان SQL استفاده می کند و لذا آشنایی قبلی با SQL می تواند فراگیری کار با MySQL را بیش از پیش ساده کند، از آنجایی که این سیستم مدیریت پایگاه داده جزئی از خانواده موسوم به LAMP (مخفف Linux, Apache, MySQL, Perl/PHP/Python) است لذا بیشترین سازگاری و کارایی را در این حیطه دارد و انتخاب اول برنامه نویسان PHP به حساب می آید، با MySQL می توانیم اطلاعات مورد نظر را در دیتابیسی که در سرور ایجاد می کنیم ذخیره کرده آنها را بر طبق اهداف برنامه به صورت حرفه ای دسته بندی و هر زمان نیاز بود در اطلاعات جستجو نموده و مقادیر دلخواه را استخراج نمائیم، این قابلیت ها برای طراحی برنامه های داینامیک وب جزء ملزومات اولیه هستند و MySQL به خوبی این نیازها را پوشش می دهد، استفاده سایت های معروفی مانند Google، Facebook، Twitter، Flicker و YouTube از این پایگاه داده نشان دهنده حرفه ای و کارآمد بودن آن است.

ساختار کلی و نحوه دسته بندی اطلاعات در پایگاه داده


همان طور که اشاره شد پایگاه داده جزء کلیدی در برنامه های کاربردی تحت وب محسوب می شود و لذا شناخت ساختار کلی و نحوه دسته بندی اطلاعات در آن اهمیت ویژه ای دارد، در MySQL هر پایگاه داده (Database) یک نام بخصوص دارد و حداقل از یک جدول (Table) اطلاعاتی تشکیل شده است، جداول نیز خود شامل زیر مجموعه هایی هستند که به آنها ستون (Column) می گویند که سطرح های اطلاعات (Rows) را در خود جای می دهند، به طور مثال دیتابیس زبان های برنامه نویسی می تواند شامل جدول برنامه نویسی دسکتاپ، برنامه نویسی موبایل و برنامه نویسی وب باشد، به همین صورت هر جدول می تواند شامل ستون (Column) و سطرها (Rows) باشد، سطرح ها در واقع همان ردیف های اطلاعات هستند که در جدول برای هر ستون ذخیره می شوند (تصویر زیر):
MySQL Database Structure
در نمونه ساختار فوق programming نام دیتابیس، desktop نام جدول و id، name و status ستون های دیتابیس هستند که سطرح های اطلاعاتی را شامل می شوند (نام دیتابیس، جدول و ستون ها در مثال فرضی و به تعداد دلخواه می باشند).

مدیریت پایگاه داده MySQL با phpMyAdmin


برنامه نویسان PHP معمولا از دو طریق می توانند به سیستم مدیریت پایگاه داده MySQL دسترسی داشته باشند، با استفاده از برنامه phpMyAdmin و همچنین با کدنویسی PHP، برنامه phpMyAdmin جهت مدیریت به اصطلاح دستی MySQL و اعمال تغییراتی مانند ساخت پایگاه داده جدید، ساخت جداول، ستون ها، تغییر ویژگی های جداول و ستون ها و مواردی از این دست کاربرد دارد و تقریبا هر کاربری با هر سطح از آشنایی با برنامه نویسی می تواند با محیط آن ارتباط برقرار کرده و نیازهای خود را مرتفع کند، phpMyAdmin در واقع برنامه ای نوشته شده به PHP با هدف مدیریت پایگاه داده با استفاده از رابط کاربری ساده و تحت مرورگر است تا هم انجام موارد اولیه، برپایی پایگاه داده و اعمال تغییرات بعدی در آن آسان و روند کار تسریع شود و هم کاربران مختلف با هر سطح از آشنایی با PHP بتوانند بدون دغدغه و احیانا نگرانی از سردرگمی، با محیط MySQL ارتباط برقرار کنند، به هر صورت برای آشنایی بیشتر می توانیم به سایت مرجع این برنامه مراجعه کنیم:
https://www.phpmyadmin.net
همچنین می توانیم با پیش نمایشی از این برنامه در آدرس زیر کار کنیم که برای شروع امکان بسیار خوبی است:
https://demo.phpmyadmin.net/master-config
یادآور می شویم که این برنامه معمولا به صورت از پیش نصب شده در سرورهای لینوکس یا برنامه های سرور مجازی (Localhost) وجود دارد و کافی است از پنل مدیریت هاست سایت یا از طریق آدرس 
localhost/phpmyadmin
در لوکال به آن دسترسی پیدا کنیم، در برنامه های سرور مجازی معمولا با نام کاربری root و بدون پسورد می توانیم وارد محیط برنامه phpMyAdmin شویم.

ارتباط PHP با پایگاه داده MySQL


همان طور که اشاره شد با کدنویسی PHP می توانیم به پایگاه داده MySQL دسترسی داشته و بین کدهای PHP با سیستم مدیریت پایگاه داده MySQL ارتباط برقرار کنیم، این قابلیت باعث می شود بتوانیم برنامه های حرفه ای تحت وب که معمولا نیازمند نگهداری داده ها در یک بانک اطلاعاتی مطمئن هستند را طراحی و عملیاتی از قبیل ذخیره سازی، دسته بندی، جستجو، انتخاب، ویرایش و حذف ردیف ها را به صورت سیستماتیک و با کمک دستورات برنامه نویسی انجام دهیم، به طور مثال کاربر می تواند در فیلد جستجوی برنامه تحت وب عبارت مورد نظر خود را وارد کرده و ما با دستورات PHP به MySQL می گوییم که ردیف های متناسب با کلمه درخواستی کاربر را انتخاب و به عنوان نتیجه به مفسر PHP برگرداند، در ادامه نتیجه دریافتی را با کدنویسی PHP تجزیه تحلیل نموده و خروجی نهایی را مطابق هدف برنامه به کاربر نشان دهیم، این ارتباط با کمک برنامه هایی تحت عنوان اکستنشن (Extension) صورت می گیرد، اکستنش ها در واقع بسته های نرم افزاری هستند که به هسته PHP امکان انجام عملیات های خاص مانند اتصال و مدیریت پایگاه داده را می دهند، در PHP برای این منظور پیشتر از اکستنشن قدیمی MySQL استفاده می شد که در نسخه 7 PHP منسوخ و به صورت پیش فرض حذف شده است و توصیه می شود برای برنامه های جدید اکستنشن MySQLi یا PDO را جایگزین آن نمائیم.
نکته: سیستم مدیریت پایگاه داده MySQL با اکستنشن MySQL دو عبارت مجزا هستند!
       PHP <===> MySQL
- MySQL (Deprecated - منسوخ شده)
- MySQLi (Recommended - توصیه شده)
- PDO (Recommended - توصیه شده)

چرا از اکستنشن MySQLi یا PDO استفاده کنیم؟


اکستنشن MySQLi (حرف i پایانی مخفف improved) نسخه بهبود یافته از اکستنشن MySQL بوده و شیوه نگارش دستورات آن در حالت برنامه نویسی رویه ای شباهت زیادی به شیوه نگارش دستورات MySQL دارد، همچنین MySQLi اکستنشن اختصاصی PHP برای کار با سیستم مدیریت پایگاه داده MySQL بوده و بیشترین سازگاری را با امکانات آن دارد، با توجه به این دلایل در آموزش های پیش رو از این اکستنشن در مثال ها استفاده خواهیم کرد، PDO (مخفف PHP Data Objects) اکستنشن دیگری است که می تواند جایگزین MySQL شود، PDO اکستنشن غیراختصاصی PHP برای کار با پایگاه داده و از جمله پایگاه داده MySQL است، این اکستنشن در مقایسه با MySQLi سازگاری کمتری با امکانات سیستم مدیریت پایگاه داده MySQL دارد اما به لحاظ حجم کم (Lightweight)، حرفه ای بودن و امکان کار با سیستم های مختلف پایگاه داده می تواند در برنامه های تحت وب گزینه مناسبی باشد، توسعه دهندگان PHP در نسخه های جدید استفاده از اکستنشن MySQL را توصیه نمی کنند و آن را به حالت Deprecated درآورده اند که یعنی استفاده از آن توصیه نمی شود و حتی از نسخه PHP 7 به بعد دیگر این اکستنشن در مفسر PHP به صورت پیش فرض وجود ندارد، دلیل این موضوع رشد امکانات و قابلیت های PHP در طی سالیان گذشته و قدیمی شدن اکستنشن MySQL در طی این فرآیند است، همچنین قابلیت های زیادی به سیستم مدیریت پایگاه داده MySQL اضافه شده است که با اکستنشن قدیمی MySQL امکان استفاده بهینه از آنها وجود ندارد، به طور مثال در بخش حفظ امنیت برنامه های نوشته شده به زبان PHP استفاده از این اکستنشن باید با دقت و تسلط کافی صورت گیرد تا با حملات موسوم به SQL Injection روبرو نشویم که این با هدف استفاده همگان از PHP در تضاد است و در اکستنشن های جدید (MySQLi و PDO) امنیت کدهای PHP به شکل محسوسی بهبود یافته، همچنین نگهداری فنی و ایجاد تغییرات بعدی در برنامه های نوشته شده با اکستنشن MySQL در مقایسه با اکستنشن های جدید به نسبت زمانبر و حساستر است.
نکته: در طراحی ساختار برنامه ها می توانیم با جدا کردن بخش اجرای پرس و جوهای دیتابیس، امکانی در نظر بگیریم که کاربر به دلخواه خود اکستنشن مورد نظر را انتخاب کند، قاعدتا این کار صرفا جنبه تزئینی ندارد و در مواردی که یک اکستشن به هر دلیل کارایی ندارد می تواند راهگشا باشد.

پشتیبانی MySQLi از برنامه نویسی رویه ای و شی گرا


اکستنشن MySQLi از دو شیوه برنامه نویسی رویه ای (Procedural) و شی گرا (Object-oriented) پشتیبانی می کند، در این سری از آموزش ها نمونه کدها هم به شیوه رویه ای و هم به شیوه شی گرا ارائه می شوند، یادآور می شویم که دو روش در عمل کارکرد مشابه دارند و تفاوت در نحوه کدنویسی و مدیریت ساختار برنامه است، هرچند بحث در مورد تفاوت برنامه نویسی رویه ای و شی گرا باید در جای خود بررسی شود اما در یک تحلیل ساده معمولا از کدنویسی رویه ای برای نوشتن برنامه ها و پروژه های کوچک به عنوان روش به اصطلاح دم دستی استفاده می شود و برنامه نویسی شی گرا برای ایجاد ساختارهای پیچیده تر و نوشتن برنامه هایی با جزئیات بیشتر کاربرد دارد، خوشبختانه PHP در این زمینه سخاوتمند است و حق انتخاب را به کاربران می دهد، توصیه ما این است که ضمن فراگیری روش رویه ای به عنوان شیوه پایه و مقدماتی، پروژه های کاربردی و پر جزئیات خود را به روش شی گرا (OOP یا Object-oriented programming) بنویسیم.
sectionدسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» توابع تجمعی (Aggregate Functions) در MySQL
» به روز رسانی ردیف ها در MySQL با UPDATE
» محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
» استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
» استفاده از WHERE در پرس و جوی MySQL
commentنظرات (۶۸ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: علی
۲۱:۲۵ ۱۳۹۴/۰۴/۱۰
سلام
آیا زیاد شدن تعداد rows ها در هر table به مرور زمان اختلال از قبیل کند شدن و ... ایجاد نمیکند ؟
مثلا 10 table داشته باشیم و به مرور زمان rows های هر table به 50.000 یا 500.000 یا 5.000.000 برسد مشکلی ایجاد نمی شود ؟
باتشکر
پاسخ: 
در صورت وجود فضای کافی بر روی هارددیسک سرور، صرف ذخیره ردیف ها مشکلی پیش نمی آورد، منتها در هنگام پردازش (جستجو بین ردیف ها برای مقاصد مختلف) این قدرت سخت افزاری سرور است که تعیین کننده سرعت نهایی است، قاعدتا هر سروری یک آستانه مطلوب دارد و افزایش اطلاعات و پردازش ها بیش از توان سرور می تواند باعث ایجاد کندی و اختلال شود، نکته دیگر بحث کدنویسی بهینه است، یعنی طوری باید کدنویسی کنیم که حداقل استفاده از منابع سرور صورت گیرد.
نویسنده: پوریا احمدی
۱۲:۳۰ ۱۳۹۴/۰۷/۱۵
سلام خوب هستید! من تو مای اس کیو ال یه دیتابیس ساختم برای وب سایتم الان چه چوری باید اپلودش کنم؟
پاسخ: 
هرچند جزئیات زیادی در مورد نحوه کار ارائه نکردید، اما به راحتی می توانید وارد برنامه phpMyAdmin شده و از گزینه های Export و Import فایل پشتیبان را (معمولا با فرمت sql.zip.) از سروری (به فرض لوکال هاست) به سرور دیگر انتقال دهید.
نویسنده: مصطفی
۲۰:۱۰ ۱۳۹۴/۱۰/۲۶
مگه mysql منسوخ نشده
خب خدا بیامرزتش الان باید آپدیت کنید آموزش pdo و mysqli بزارید
پاسخ: 
به روزرسانی آموزش ها نیاز به زمان دارد، این فرآیند هنوز تکمیل نشده!
نویسنده: masod
۱۳:۱۴ ۱۳۹۴/۱۱/۱۱
سلام و خسته نباشید خدمت ادمین سایت
من موقع ایجاد یک table در phpmyadmin بخش Collation رو روی utf8_persian_ci قرار میدم تا بتونم هم حروف فارسی و هم انگلیسی و عدد در اونها ذخیره کنم.
اما با تغییر هاستینگ و تفاوت بین ورژن های php ارائه شده توسط انها به یک مشکل برخوردم
حروف فارسی در دیتابیس به شکل
ØسلاÙ
ذخیره میشوند و بعد از فراخوانی به شکل صحیح نمایش داده میشوند (تا اینجا مشکلی وجود نداره).
اما بعد از تغییر ورژن php به ورژن بالاتر حروف فارسی به همان شکل ناخوانا از دیتابیس فراخوانی می شوند و بلعکس موقع ذخیره در دیتابیس به شکل خوانا ذخیره می شوند.
حال دو سوال از شما داشتم :
1- موقع ایجاد table بخش Collation رو دقیقا چی قرار بدم تا در آینده چنین مشکلی پیش نیاید (با این حساب که هم حروف فارسی و انگلیسی و اعداد قراره در آنها ذخیره بشه).
2- اطلاعات فعلی دیتابیس رو به چه روشی convert کنم تا به شکل خوانا تبدیل بشن ؟ (از ++notpad استفاده کردم اما نتیجه ای نگرفتم).
با تشکر بابت سایت مفیدتون
پاسخ: 
تا آنجا که اطلاع داریم صرف تغییر نسخه PHP، به خودی خود در اطلاعات دیتابیس تغییر ایجاد نمی کند، در واقع دیتابیس مستقل از PHP است مگر اینکه اطلاعات شما مجدد از فیلتر کدهای PHP عبور کند (به فرض فراخوانی و مجدد ذخیره شود)، به هر صورت Collation انتخابی شما مشکلی ندارد و در واقع بهترین حالت است، فقط باید در هنگام کار با کدهای PHP و بلافاصله پس از اتصال با دیتابیس، پرس و جوی زیر را (در PDO یا mysqli) تنظیم کنید:
SET NAMES 'utf8'
برای بازگرداندن اطلاعات فعلی نیز راهی جزء این نیست که با یک کد PHP اطلاعات را ردیف به ردیف فراخوانی کرده و سپس مجدد در دیتابیس ذخیره کنید (برای جلویگری از بروز مشکلات ناخواسته، بهتر است یک جدول جدید بسازید و صرفا پس از انتقال صحیح تمام اطلاعات، از جدول جدید استفاده کنید) همچنین باید دقت کنید که فایل های شما BOM نداشته باشد، بدین منظور فایل های خود را با ویرایشگر ++Notepad باز کرده و سپس از قسمت Encoding گزینه Encoding UTF-8 (بدون BOM) را انتخاب و فایل خود را مجددا ذخیره نمائید.
نویسنده: masod
۱۹:۳۲ ۱۳۹۴/۱۱/۱۲
سلام
خداخیرتون بده مشکلم برطرف شد
نویسنده: مجتبی
۲۰:۱۱ ۱۳۹۴/۱۱/۱۵
سلام برای حذف دستی جدول از دیتابیس چیکار کنم؟
روش راست کلیک می کنم گزیه دیلیت نیست
پاسخ: 
در صورت استفاده از phpMyAdmin، تیک مربوط به جدول را زده و از منوی بازشو، گزینه Drop را انتخاب و حذف جدول را تائید کنید!
نویسنده: رز
۲۲:۲۲ ۱۳۹۴/۱۱/۳۰
سلام
خسته نباشید
برای طراحی فروشگاه انلاین چه زبانهای برنامه نویسی لازمه که یادبگیریم
مرسی
پاسخ: 
اگر خودتان بخواهید کدنویسی کنید، باید HTML، CSS، JavaScript + jQuery ،AJAX و هچنین یکی از زبان های برنامه نویسی سمت سرور از جمله PHP یا ASP.NET بلد باشید!
نویسنده: رز
۱۰:۳۳ ۱۳۹۴/۱۲/۰۳
به طور مفصل باید بلد باشیم یا مختصر یاد بگیریم کافیه
این ها رو که گفتین تو چه نرم افزار یا محیطی باید نوشت
پاسخ: 
اگر قرار بر نوشتن و طراحی برنامه باشد، بله، باید مسلط باشید، در غیر اینصورت استفاده از برنامه های آماده و رایگان نیاز چندانی به تسلط بالا ندارد!
برای کدنویسی وب نرم افزارهای زیادی وجود دارد، به طور مثال phpStorm گزینه خوبی برای برنامه نویسان PHP است، در کنار آن می توانید از ویرایشگر ساده ++Notepad استفاده کنید.
نویسنده: غریب
۰۹:۴۶ ۱۳۹۵/۰۴/۰۲
سلام عزیز خسته نباشید
بنده اسکریپتی دارم که نصب کرده بودم رو ساب دامینم مشکلی نداشت و خوب کار میکرد منتها ورژن پی اچ پی سرور رو اپدیت کردند الان من وقتی میخوام وارد ساب دامینم بشم که نام کاربری و ورد داره این ارورها رو میده
Field 'bank' doesn't have a default value
بالایی موقع ورود با مهمان اتفاق میفته
Field 'ip' doesn't have a default value
این ارور هم وقتی با نام ثبت شده میخوام وارد بشم میده
متاسفانه گزینه تغییر ورژن پی اچ پی رو هم محدود کردن
میخوام ببینم ایا راهی وجود داره که این مشکل رو حل کنم شخصا ؟
اگه هست خواهشا با زبان ساده و غیر تخصصی راهنماییم کنید مرسی و موفق باشید
پاسخ: 
راه حل خیلی ساده برای رفع این خطاها وجود ندارد، باید ساختار اسکریپت بررسی شود، البته این خطاها مربوط به دیتابیس هستند و از طریق برنامه phpMyAdmin می توانید برای فیلدهای موجود در خطاها، با توجه به عملکرد اسکریپت، یک مقدار پیش فرض (با استفاده از گزینه default value) در نظر بگیرید.
نویسنده: غریب
۲۱:۵۴ ۱۳۹۵/۰۴/۰۲
سلام مجدد
خوب نمیشه بطور مثال شما دستوری بدید بنده بزارم داخل فایل مای اسکیو ال که این ارور رفع بشه ؟
واقعا برام ضروریه بیش از اندازه تمام امروز رو بیش از شاید 12 ساعت صرف خوندن سایتهای خارجی و ایرانی کردم متاسفانه چیزی دستگیرم نشد چون دانشم پایینه اگه میشه به این لینک نگاهی بندازید من متوجه نشدم دقیق و اگه میشه لطف کنید مشکلم و حل کنید یه دنیا ممنون ازتون
https://forge.typo3.org/issues/54702
ظاهرا تو این لینک گفته میشه با دستوری این ارور رو رفع کرد اما بنده متوجه نشدم
پاسخ: 
مطالب مطرح شده در واقع همان راه حلی است که در پاسخ قبل گفته شده، یعنی در نظر گرفتن مقدار NOT NULL برای فیلد مورد نظر، البته در صورتی که با برنامه phpMyAdmin آشنایی ندارید می توانید دستور زیر را جهت غیر فعال کردن کلی نمایش خطاها در ابتدای فایل php قرار دهید:
error_reporting(0);
نویسنده: غریب
۱۸:۲۹ ۱۳۹۵/۰۴/۰۷
سلام مجدد
بنده تا جایی رسیدم که میگن قواعدی در اسکیو ال دیگه منسوخ شدند در ورژنهای جدید و باید بازنگری ای تو نوشتن دیتابیس بشه از جمله نحوه کانکت شدن به دیتابیس و غیره
و به اینها ارتقا پیدا کنه
mysqli
PDO
و فایل کافینگ هم باید تغییراتی کنه گویا برای درخواست از دیتابیس اگه امکانش هست براتون صفحه ای هم برای این موضوع قرار بدید که چطور میشه موارد منسوخ شده رو جایگزین کرد با موارد صحیح اونها چون با شرایط موجود نیاز خیلیها خواهد شد
بیشتر ماها متخصص این زمینه نیستیم از روی نیاز مجبوریم درگیر باشیم متاسفانه اموزش جامع و کمکی مناسبی هم تو این زمینه نیست ممنون و خدا نگهدار
پاسخ: 
تفاوتی بین دستورات SQL وجود ندارد و آموزش ها از این نظر همچنان کاربردی هستند، منتها PHP از دو اکستنشن (قابلیت نرم افزاری) جدید برای ارتباط با پایگاه داده MySQL استفاده می کند که هر کدام شیوه دستوری (Syntax) خاص خودشان را دارند، آموزش این اکستنشن ها (PDO و mysqli) نیاز به ارائه سلسله مطالبی است که متاسفانه در کوتاه مدت امکانپذیر نمی باشد، اما مطالبی در وب در این خصوص وجود دارد، مخصوصا در مورد mysqli که تفاوت زیادی با نسخه قدیمی یعنی mysql ندارد.
نویسنده: AMin
۱۳:۵۴ ۱۳۹۵/۰۴/۲۷
سلام جناب خسته نباشید . شرمنده بند یه سوالی داشتم مخوام مابین دو تاریخ رو نمایش بدم که از تابع BETWEEN استفاده میکنم ولی متاسفانه بنده تاریخ رو در دیتابیس به این صورت ذخیره کردم
2016-07-02 12:07:16
یعنی تاریخ رو همراه با ساعت ذخیره کردم الان با این روش هم نمیتونم مابین این تاریخ رو نمایش بدم
SELECT * FROM `posts` WHERE post_date BETWEEN '2016-06-28' AND '2016-07-02'
اگه بشه کمک کنید خیلی خیلی ممنون
پاسخ: 
فرمت ذخیره شدن تاریخ در دیتابیس صحیح است، خوشبختانه حل این مشکل چندان سخت نیست، می توانید با افزودن مقدار 00:00:00 به عنوان زمان برای تاریخ ها آن را رفع کنید! مثال:
2016-07-02 00:00:00
نویسنده: AMin
۱۳:۴۸ ۱۳۹۵/۰۴/۲۸
سلام جناب بازم خسته نباشید . بنده این روش رو شما گفتی رو تست کردم ولی متاسفانه جواب نداد
SELECT * FROM `posts` WHERE post_date BETWEEN '2016-07-02 00:00:00' AND '2016-07-03 00:00:00'
ما بین این تاریخ رو نمایش نداد تاریخ های قبل رو هم نمایش داد :(
پاسخ: 
دستور از نظر ساختار و Syntax مشکلی ندارد، لذا ایراد باید در قسمت دیگری باشد که نیاز به تست و اجرای کدها دارد!
نکته 1: دقت کنید که نوع داده (Data Type) ستون مورد نظر از نوع DATETIME باشد نه موارد دیگر مانند VARCHAR و...
نکته 2: شیوه زیر را نیز امتحان کنید:
SELECT * FROM tbl WHERE col BETWEEN CAST('2016-07-02' AS DATE) AND CAST('2016-07-03' AS DATE);
نویسنده: محمد
۱۰:۱۶ ۱۳۹۵/۱۲/۱۳
استاد سلام و تشکر فراوان که زکات علمت رو میدی، استاد عزیز من با کد نویسی به پایگاه داده کانکت میشم و مشکلی نیست اما وقتی میخوام create database کنم به من ارور access denied میده پسورد چیزی هم نزاشتما، چرا؟؟
پاسخ: 
باید بررسی کنید که کاربر root مجوزها را از بخش Privileges داشته باشد، برای این کار با استفاده از برنامه phpMyAdmin وارد قسمت Users شده و از گزینه Edit Privileges بررسی کنید که کاربر مجوز CREATE را داشته باشد (برای جلوگیری از خطاهای دیگر می توانید تمام مجوزها را انتخاب کنید!).
نویسنده: امیرحسین
۱۱:۲۲ ۱۳۹۶/۰۶/۱۰
سلام استاد گرامی
تشکر بابت مطالب مفیدتون و همراهی و راهنمایی هایی که به بنده میکنید سپاس گذارم.
مجدد یه سوال دیگه از شما در مورد LEFT JOIN ها داشتم.
اینکه من چطور میتوانم با سه تا جدول در شرایط خاص ارتباط برقرار کنم، خب مسلما با دو تا جدول که برام کاری نداره ولی سه تا جدول باشه را نمیدونم.
به طور مثال من میخوام همچین کووری را بنویسم
حذف شد
ایا همچین دستوری ممکن است ؟ این دستور ایراد دارد لطفا اصلاحش کنید
فقط این قسمت ایراد دارد
LEFT JOIN tbl_send_time_posts, tbl_users
که tbl_users را نمیدونم کجا استفاده کنم ایا اینگونه که استفاده کردم یا طریق right join یا union join یا از view ها یه خلاصه ای بکنم:
من میخوام پست هایی که متعلق به نام کاربری amirhossein در جدول tbl_users هست انتخاب شوند و تمام پست هایی که ایجاد کرده این کاربر به همراه یک سری فیلدها که هر کدام در یک جدول هستند و میخوام به انها دسترسی داشته باشم.
اسکیو الی ک خودم نوشتم اینه
حذف شد
اینجا من در حلقه هر بار یک دستور select مینویسم تا به $sabet_text_user این متغیر دسترسی پیدا کنم ولی شما این را اصلاح کنید که چطور اون دستور سلکتی که در حلقه هست را بیرون حلقه با همون یدونه دستور سلکت قبلی جوین بدم. با تشکر
پاسخ: 
به نظر جواب های ارائه شده برای سوال زیر می تواند به درک موضوع کمک کند:
https://stackoverflow.com/questions/3709560/joining-three-tables-using-mysql
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





6 × 3
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form محمد رستمی
در:
سلام اگه میشه لیست توابع و کاربردشونو توی یه فایل pdf بزارین
۱۳۹۹/۰۹/۰۵

form شهریار صادقی
در:
من سه تا صفحه در php storm درست کردم یکی برای html یکی برای جاوا اسکریپت و جی کوِئری و یکی هم برای css اول...
۱۳۹۹/۰۹/۰۱

form دوست خوب
در:
اگر بخواهیم برای رفتن به مرورگر و باز کردن یک صفحه لینک دهیم؟
۱۳۹۹/۰۹/۰۱

form مجتهدزاده خیاوی
در:
سلام و خسته نباشید من جدولی دارم که تعداد ستون های اون نسبتا زیاده. توی نمایشگر های دسکتاپ مشکلی ندارم اما تو گوشی و...
۱۳۹۹/۰۸/۲۹

form Alireza
در:
خیلی ممنون از پاسخگویی سریع! بله خوشبختانه سرور هاست دانلود LiteSpeed هست و از جدیدترین PHP هم پشتیبانی میکنه. تو قسمت path هم دایرکتوری...
۱۳۹۹/۰۸/۲۹

form Alireza
در:
عرض سلام و خسته نباشید از مطالب استفاده کردم و نظرات هم خوندم واقعا مفید بودن. یکی دو نفر مشکلی شبیه بنده داشتن. من...
۱۳۹۹/۰۸/۲۹

form امیرحسین
در:
سلام استاد عزیز وقت بخیر من یه سوال در مورد function use داشتم اگه ممکنه با مثالی کاربردی توضیح بدید که کارش چیه :...
۱۳۹۹/۰۸/۲۷

form Amin Eskandari
در:
سلام عالی بود ممنون
۱۳۹۹/۰۸/۲۷

form فاطمه
در:
چگونه در حلقه ها اعداد را جمع کنیم و در خروجی مجموع انان را نشان دهد مثلا جواب
۱۳۹۹/۰۸/۲۶

form میکاییل
در:
درسته مشکلی نیست تو ارسال اطلاعات. تنها مشکلم اینه که هدر عمل نمیکنه و ریدایرکت انجام نمیشه و نمیره سمت صفحه پرداخت. حالا نمیدونم به...
۱۳۹۹/۰۸/۲۵

form میکاییل
در:
سلام من تو قسمتی از صفحه پرداخت انلاین دارم همه چی درسته و اطلاعات بصورت ایجکسی ارسال میشه و سمت سرور نوشتم که هدر...
۱۳۹۹/۰۸/۲۵

form mohsen
در:
با عرض سلام و خسته نباشید خدمت استاد ببخشید من یه فرمی دارم که از طریق ایجکس ثبت میشه داخل دیتا و بعد میره به...
۱۳۹۹/۰۸/۲۳

form مجید
در:
سلام وقت بخیر . ببخشید نمیشه دیتابیس توی کدنویسی html ایجاد کنیم افرادی هستن توی محل کارش اینترنت ندارن . اینو باید چکارکنم
۱۳۹۹/۰۸/۲۳

form حسینی سیانکی
در:
سلام مطلب خیلی مفید و کاملی بود. خسته نباشید
۱۳۹۹/۰۸/۲۰

form ar
در:
سلام ممنون از سایت خوبتون ببخشید من تازه دارم زبان برنامه نویسی جاوااسکریپت رو یاد میگیرم و لپتاپم لپتاپ نسبتا ضعیفی هست من...
۱۳۹۹/۰۸/۲۰
form saba
در:
سلام من این کد رو در قسمت کد های اختصاصی کاربر وارد کردم اما هیچ تغییری ایجاد نشد ممکنه راهنمایی کنید؟
۱۳۹۹/۰۸/۱۹
form مینا
در:
سلام. من میخوام از regex توی ماشین حساب استفاده کنم ممنون میشم منو راهنمایی کنین
۱۳۹۹/۰۸/۱۹
form intal
در:
سلام خسته نباشید من واقعا از وبگو ممنونم که این آموزش های ارزشمند رو در اختیار کاربران قرار میده راستش من هرکاری می کنم پوزیشن...
۱۳۹۹/۰۸/۱۷
form بهروز
در:
مهندس جان خیلی عالی بود دستت درد نکنه درست شد.
۱۳۹۹/۰۸/۱۷
form اصغر
در:
خوندمش خیلی ممنون مفید بود
۱۳۹۹/۰۸/۱۵
form بهروز
در:
ممنون، خیلی لطف کردید، چشم امتحان میکنم خبر میدم فقط یه موری رو یادم رفت عرض کنم اینکه مثلا لینک exm.ir/m/yyyy به...
۱۳۹۹/۰۸/۱۴
form بهروز
در:
ممنون از پاسخگویی سریعتان در سوال فوق yyyy متغیر هست یعنی هرسری یه عددی کلیک میشه مثلا exm.ir/1234 حالا میخوام ریدایرکت بشه به آدرس...
۱۳۹۹/۰۸/۱۴
form بهروز
در:
سلام اگه بخوام ادرس 1 رو به ادرس دو ریدایرکت کنم چطور انجام دهم:
۱۳۹۹/۰۸/۱۴
form Mori
در:
سلام. میخواستم بدونم که چگونه در html میشه چند لیست عمودی رو کنار هم قرار داد. یعنی در واقع لیست ها زیر هم نباشند. ...
۱۳۹۹/۰۸/۱۰
form مبین
در:
با سلام من می خواستم دستوری در دیتابیس بنویسم که بر اساس قد افراد نتایج را مرتب و چاپ کند و اگه قد برار بود...
۱۳۹۹/۰۸/۰۹
form عباس علیمردانی
در:
سلام. من یک سوال یا بهتر بگم خواهش داشتم ایا شما میتوانید وبلاگ رو فیلتر کنید؟ یعنی با حکم قضایی فیلتر بشه. وبلاگ برایه...
۱۳۹۹/۰۸/۰۹
form ابوالفضل
در:
سلام استاد اومدم امروز بعد از سالها سوالاتی که از شما استاد بزرگوارم میپرسیدم رو زیر این پست مرور می کردم واقعا چقدر مبتدی...
۱۳۹۹/۰۸/۰۹
form mahtab
در:
سلام وقتتون بخیر ببخشید من میخوام یه آهنگی رو بزارم وبم کدش تو اینترنت زدم اما نیاورد بی زحمت میشه راهنمایی کنین چجوری...
۱۳۹۹/۰۸/۰۸
form Mori
در:
بهترین سایت برنامه نویسی در ایران هستید
۱۳۹۹/۰۸/۰۷
form Mori
در:
سلام. چگونه باید در لیست برای هر کدام از اعضا به صورت جداگانه لینک بگذاریم؟؟
۱۳۹۹/۰۸/۰۷
form جیهوپ
در:
سلام استاد عزیز من میخواستم صفحه وبی ایجاد کنم مثل این صفحه وبی ایجاد کنید که مشخصات شما را در 3 پاراگراف با ویژگی...
۱۳۹۹/۰۸/۰۶
  در انتظار بررسی: ۲
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.