我目前在使用 PHP 和 MySQL 时遇到了一个非常奇怪的问题。
我有一个数据表,我试图按日期排序。但遇到两件奇怪的事情:
- 当我在我的应用程序中使用 PHP 分页(在 SQL 中使用 LIMIT)时,有几条日期相同但超过两页的记录,当我滚动到第二页时,排序发生了变化,结果你看到了一些第一页上的记录,还有一些你根本看不到的记录!
- 我通过打印 SQL 命令和返回的行的 ID 来调试它。我复制并粘贴了一个 PHP 打印的 SQL 命令,并将该命令直接插入 phpMyAdmin,它以不同的顺序返回设置的值!
这是我的命令:
SELECT DISTINCT a.id
FROM orders as a, companies as b, orderProducts as e
WHERE a.companyId = b.id AND a.id = e.orderId AND a.deleted = 0 AND a.id <> 0
ORDER BY a.dateReceived DESC
LIMIT 45, 15
通过 phpMyAdmin 完成时,该命令似乎按预期工作;它保留了相同的顺序,但通过 PHP 它改变了它。
这是我打印 ID 的代码,所以我不认为它是 PHP 的东西。
$result = mysql_query( $query ) or die( 'A mysql error has occured: ' . mysql_error(). $query );
$ids = array();
while($row = mysql_fetch_assoc($result)) {
$ids[]=$row['id'];
}
if( $_GET['debug'] == "true" ) {
echo "Query: ".$query." IDs: ";
print_r( $ids );
}
也许这与那些连接有关?
有任何想法吗?