2016-07-07 58 views
-2

我正在爲尋寶尋找web應用程序所有連接到在線服務器都是正確的,應用程序工作正常,並保存並從/到網上獲取數據mysql數據庫。php和mysql代碼在localhost上工作,但在線服務器存在問題

在我的應用程序註冊(開始時間)和會話(結束時間)會話,其中(結束時間)意味着用戶已經完成了比賽。

我正在從這裏(結束時間)的冠軍數和組織基礎上有贏家(結束時間

的問題是,本地主機(使用XAMPP)我得到的贏家號碼正確。而如果我上傳我的工作我的主機(Linux中的cPanel)我總是贏家爲0(即使它不是第一個)

這是結果,我上網

this is the result that I get online

而如果我在本地主機上我得到正確的贏家數量

localhost I get the winner number correctly

這是代碼來獲得冠軍:

function getWinner($uid, $set){ 

    $db = new Db(); 
    $winner = 0; 
    $query = "SELECT endtime FROM eid_race WHERE id = '$uid' AND endtime IS NOT NULL"; 
    $result = $db->query($query); 
    if(sizeof($result) == 0){ 
     $updateEndtime = "UPDATE eid_race SET endtime = UNIX_TIMESTAMP() WHERE id = '$uid'"; 
     $db->execute($updateEndtime); 
    } 
     $query = "SELECT COUNT(id) FROM eid_race WHERE id <> '$uid' AND endtime IS NOT NULL AND endtime < (SELECT endtime FROM eid_race WHERE id = '$uid') AND questionset = '$set'"; 
    $result = $db->query($query); 
    echo ' result: ' . $result[0][0]; 
    if(sizeof($result) == 1){ 
     $winner = $result[0][0]; 
     echo ' winner: '.$winner; 
    } 

    echo ' winner after: '.$winner; 


    return $winner+1; 

} 

,當我直接測試上的phpmyadmin查詢我得到正確的結果,但PHP的結果還是0

SELECT COUNT(id) FROM eid_race WHERE id <> '577dd5759fa67' AND endtime IS NOT NULL AND endtime < (SELECT endtime FROM eid_race WHERE id = '577dd5759fa67') AND questionset = 'A' 

enter image description here

+1

檢查current datetime將與服務器的phpinfo()測試文件和比較PHP/MySQL的版本。 –

+2

@SumanSingh是對的,既然你正在處理'mysql'中的'datetime'和'timestamp',那麼你應該檢查服務器'timezone'和'date time settings'。 – Avishek

+0

@SumanSingh ** localhost:** PHP版本5.6.15,mysql客戶端API版本mysqlnd 5.0.11-dev,**聯機服務器:** PHP版本5.3.29,mysql客戶端API版本5.6.30 - –

回答

0

您可以修改timezonemysqlmy.ini文件windowsmy.cnf文件在linuxmac系統。 但我認爲最好的辦法是使用

set time_zone = '+2:00'; --Timezone:Europe/Berlin 

改變從查詢的時區,並使用select now();

+0

我的本地主機time_zone是'+2:00'(歐洲/柏林),在線是UTC –

+0

檢查SELECT now()* localhost:* 2016-07-07 08:43:12,**在線:** 2016-07-07 13:43:49 –

+0

好的,然後運行查詢'set time_zone ='+2:00';'在服務器上檢查。 – Avishek

相關問題