2016-07-15 63 views
-3

這是我的PHP代碼,它在localhost中工作,但是當我在服務器上上傳時,它不起作用。從數據庫獲取數據需要1天的時間。 ,我使用時間戳entry_time使用MySQL和PHP計算當今時間戳記錄

<?php 
require_once('connection.php'); 
$id=$_SESSION['SESS_MEMBER_ID']; 
$query = mysql_query("select count(*) as Unread3 from s_daily_reporting where (mem_id='$id')&&(entry_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))"); 
$data2= mysql_fetch_array($query);  
echo $sum=8-$data2['Unread3']; 
?> 
+0

本地主機VS主機不應該的問題 – 2016-07-15 04:58:31

+0

請檢查您的服務器時區 –

+0

阿米特如果其中一個答案幫你,請選擇它(並且如果你願意的話可以upvote)。研究,測試和撰寫這些答案需要時間。問和跑並不是很酷。 – BeetleJuice

回答

0

你必須在否則啓動會考慮標準時間加上國家的日期默認時間。印度的例子date_default_timezone_set('Asia/Kolkata');。您可以爲您在谷歌你的國家默認的時間,並添加在開始

0

CURRENT_DATE()已經讓你在午夜當前日期。如果你想從當天的記錄,你不需要加減

entry_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY) 

可以簡單地

entry_time >= CURRENT_DATE() 

它是工作在本地主機,但是當我在服務器上載是 沒有工作,那麼服用1天的數據之前,從數據庫

無論你是在本地主機上或生活應該讓你的結果沒有什麼區別。如果您確認代碼在本地工作,那麼問題可能是entry_time存儲的時區偏移量與服務器的當前時區不同。如果數據是在另一臺服務器上構建的,然後轉移到當前的數據,或者如果應用程序將數據從遠程位置連接到MySQL服務器,則這種情況特別有可能。無論哪種方式,當服務器將entry_timeCURRENT_DATE()進行比較時,無法獲得可靠的結果,因爲它認爲兩者來自同一時區。

要解決此問題,您應該在連接時設置服務器的時區。一旦連接,做任何時候操作之前運行以下查詢(調整你的時區偏移量):

SET timezone = '+0:00'