PHP PDO - MySQL Query在两台服务器上带来不同的结果

时间:2016-05-16 16:01:07

标签: php mysql xampp

您好我有以下问题:

 select t.* 
 from (SELECT * 
       FROM Matches 
       where HID=:ID or AID=:ID 
       order by Date desc 
       limit 10
 ) t 
 order by t.Date, t.Time asc

作为PDO准备语句的一部分,我有两个网站在ubuntu上运行一个,一个在Windows 7上使用Xampp,数据是相同的但是在ubuntu框中它返回了最后10个游戏的日期和时间顺序。在Windows框中,十个游戏(列表中的第一个)实际上是一个较早的游戏(在同一个晚上一个游戏,下午6:15,另一个在晚上7点播放),后者应该显示但不在窗户框。这似乎有点奇怪。只是想知道是否有其他人曾经遇到过这个问题?

2 个答案:

答案 0 :(得分:1)

数据在一个日期包含两个游戏,但时间不同。如果您没有按时间排序游戏,则行顺序未确定。没有ORDER BY行可以出现在任何地方。在大多数情况下,首先插入表行将首先输出。但这不是记录在案的行为,您不能使用它。在您的情况下,不会按时间进行隐式排序。今天你将在第一排晚上7点到达,明天可能是下午6点15分。

为了在不同的计算机上接收相同的结果,您必须正确排序,没有不相关的行为。只需在子查询中按时间添加排序,您将始终在具有相同数据的任何MySQL实例上获得相同的结果。

SELECT t.* FROM (
  SELECT *
  FROM Matches
  WHERE HID = :ID OR AID = :ID
  ORDER BY `Date` DESC, `Time` DESC
  LIMIT 10
) t
ORDER BY t.Date, t.Time

这将返回真正的10场比赛。

答案 1 :(得分:0)

您使用不同的MySQL安装吗?我可以想象不同的安装处理方式不同。

此外,您确定Windows机顶盒上存在7:00 PM的游戏记录吗?推送数据库中的记录可能会出现问题。