2016-07-07 122 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

相关问题