شنبه 2 شهریور 1398 |  عضویت / ورود






[ بخش اصلی آموزشها | افزودن آموزش | داری بیشترین امتیاز | دارای بیشترین بیننده | جدیدترین نظرات ]

بهترین راه درج NOW در MySQL با کمک PHP



این آموزش مربوط است به موضوع آموزش PHP‏ که توسط Hamid در تاریخ: Sunday, 2016 July 17 ارسال شده است.   |   تعداد بازدید: 1629 بار   |   امتیاز متوسط: امتیازی داده نشده است


----------------------------------

یکی از مشکلات بزرگ در کدنویسی به زبان PHP، درج زمان کنونی در دیتابیس MySQL است. اگر شما در دیتابیس فیلدی داشته باشید که بخواهید در آن زمان درج رکورد را ثبت کنید، دو راه پیش رو دارید:

۱- نوع فیلد را timestamp قرار دهید و سپس defualt value مربوط به آن را روی CURRENT_TIMESTAMP تنظیم کنید.

مشکل این روش: این روش متأسفانه timezone مربوط به سرور را ملاک قرار می‌دهد و زمان را مثلاً به ساعت تهران در دیتابیس درج می‌کند. در حالی که ما در برنامه‌نویسی باید حتماً تمام زمان‌ها را بر مبنای لندن (یعنی UTC) درج کنیم.

۲- نوع فیلد را datetime قرار دهید وهنگام درج در دیتابیس به جای مقدار این فیلد از تابع NOW()‎ استفاده کنید.

مشکل این روش: این روش نیز متأسفانه همان مشکل بالا را دارد و زمان را بر اساس UTC درج نمی‌کند.

 

راه حل:

شما نوع فیلد را روی datetime یا همان timestamp قرار دهید و حتی اگر خواستید همان CURRENT_TIMESTAMP را هم به عنوان مقدار پیش‌فرض انتخاب کنید، اما در PHP هنگام درج در دیتابیس، خودتان لحظه فعلی را به UTC به‌دست آورید و به جای NOW از آن استفاده کنید.

به مثال زیر دقت کنید:

http://img.aftab.cc/news/95/current_timestamp-problem_mysql_php.png

به متغیر now و نحوه‌ی استفاده از آن هنگام درج دقت کنید...

با این روش، قطعاً مطمئن هستید که زمان فعلی به UTC در دیتابیس درج می‌شود. (تابع gmdate زمان را به GMT برمی‌گرداند و شما آن‌را در دیتابیس درج می‌کنید)

موفق باشید؛
حمید رضا نیرومند





ارسال سؤال یا نظر


1- SHAPARAKPAY:
بوسیله: shaparakpay, در: Wednesday, 2016 July 20-کد: 14625
ممنون استفاده کردیم

Tutorials ©