2014-01-30 3 views
0

Я создаю веб-приложение с использованием PHP и Zend Framework, и пытаюсь вставить новую строку в базу данных, используя этот код:PHP Zend_date вставка сейчас() в дб

class PriceWatcher_PriceTable extends Zend_Db_Table_Abstract { 

protected $_name = 'price_watcher_price'; 
public function newPrice($data) 
{ 
    $data['tme']=Zend_Date::now(); 
    $this->insert($data); 
}} 

У меня есть столбец в моей БД называется tme с форматом datetime. когда я загрузить этот кусок кода на сервере, он отлично работает, но при попытке запустить локально он хранит

0000-00-00 00:00:00

Я проверил журнал MySQL для запросов и нашел этот запрос:

UPDATE price_watcher_price SET tme = '2014-48-30 10:48:42' WHERE (id = '40')

Внимательно посмотрите на запрос, вы увидите, что он отправляет minute вместо month в строку даты и mysql отклоняет его. И что-то более странное, что когда я echo его, я получаю это:

30 января 2014 11:07:08 AM

А вот месяц OK.Something важно то, что мой сервер это linux, а моя локальная система - это окна. Где проблема?

+0

Вы хотите вставить или обновить? –

+0

Никакой разницы. Вставки и обновления для даты не сработали. Я нашел решение, и оно работает! – Abadis

ответ

0

Я нашел ответ сам. В вашем Bootstrap.php сайте добавить код ниже функционировать _init_Loader_Autoloader:

date_default_timezone_set ('Asia/Tehran'); 
$locale = new Zend_Locale ('fa_IR'); 
Zend_Registry::set ('Zend_Locale', $locale); 

Если вы не имеете, что функция создать и поместить код в нем. переменная Asia/Tehran и fa_IR - его собственный часовой пояс. В моем случае я должен был использовать их. Вы можете увидеть список часовых поясов php here. Вы можете посмотреть список zend_locales here.

Спасибо за помощь.

Смежные вопросы