У меня сейчас очень странная проблема с PHP и MySQL.MySQL ORDER BY и поля даты, имеющие непредсказуемые результаты
У меня есть таблица данных, которую я пытаюсь сортировать по дате. но приходит accross две странных вещей:
- Когда я использую PHP разбиение на страницы (с помощью LIMIT в SQL) в моем приложении, и есть несколько записей с одинаковой датой, но более двух страниц, когда я прокручиваю в секунду страница изменилась, и в результате вы видите некоторые записи, которые были на первой странице, и некоторые записи, которые вы вообще не видите!
- Я пошел отлаживать это, напечатав команду SQL и идентификаторы возвращаемых строк. Я скопировал и вставил одну из команд SQL PHP, и ввел эту команду непосредственно в 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 он меняет его.
Это мой код для печати идентификаторов, поэтому я не думаю, что это что-то в 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);
}
Возможно, это связано с этими объединениями?
Любые идеи?
вы сохраняете дату в каком типе данных? –
в поле даты – user1020317
нормально, поэтому проблема с разбивкой на страницы, вы можете показать мне полный код? –