Заказ базы данных SQL через PHP

#php #sql

#php #sql

Вопрос:

Я пытаюсь упорядочить базу данных по дате, но у меня возникают проблемы с ее сортировкой. База данных создается в SQL с помощью PHP, и столбец, который я хочу использовать для сортировки, добавляет данные о дате в этом формате:

2011-10-26 07:10

Указанная выше дата также является переменной. РЕДАКТИРОВАТЬ: изменено на ‘datetime’ благодаря предложениям

Есть идеи, чтобы я мог сортировать строки в таблице, используя столбец даты?

Я создал отдельный скрипт, чтобы сузить эту проблему:

 <?php
$con = mysql_connect("localhost","root","");
mysql_select_db("thoughtsdata",$con);


$order = "SELECT * 
FROM  `thoughts` 
ORDER BY  `thoughts`.`DateTime` ASC 
LIMIT 0 , 30";

if(!mysql_query($order,$con))
{
die('Could not order database: ' . mysql_error());
}


mysql_close($con);
?>
  

Теперь я не получаю ошибок при запуске этого скрипта в моем браузере, но моя таблица остается несортированной:

   Edit    Inline Edit     Copy   Delete Hey sdfasdf    2011-10-26 19:41:00
  Edit    Inline Edit     Copy   Delete Hey asdfasdf    2011-10-26 07:47:00 
  Edit    Inline Edit     Copy   Delete Hey dfasdfasdf    2011-10-26 19:47:00   
  Edit    Inline Edit     Copy   Delete aaa how to sort this    2011-10-26 07:54:00 
  Edit    Inline Edit     Copy   Delete aaa any progress!!??    2011-10-26 08:13:00 
  Edit    Inline Edit     Copy   Delete oh no!  grrr    2011-10-26 08:21:00 
  Edit    Inline Edit     Copy   Delete zzTOp   thinking about sorting this out!    2011-10-27 19:12:00
  

Мне кажется, что происходит то, что база данных сортируется, но она не остается такой.

Комментарии:

1. вау, спасибо за быстрый ответ. Я смог легко изменить тип данных в php на datetime … теперь у меня возникли проблемы с сортировкой таблицы из php-скрипта. У меня есть эта строка в php: mysql_query(‘SELECT * ИЗ мыслей’, ‘ORDER BY DateTime’);

2. возможно, is неправильно выполнил инструкцию

3. Правильный синтаксис будет следующим: mysql_query(«ВЫБЕРИТЕ * ИЗ порядка мыслей ПО имени поля»);

4. DateTime — это столбец name….is это то же самое, что и имя поля?

5. Добавьте любой вывод из скрипта (включая все ошибки) в свой пост. Если выходных данных нет, проверьте журналы ошибок вашего веб-сервера, чтобы узнать, что произошло.

Ответ №1:

Вы могли бы попробовать использовать предложение order, подобное этому:

 ORDER BY UNIX_TIMESTAMP(fieldname) ASC
  

Однако, если ваше поле имеет YYYY-MM-DD hh:mm формат, похожий на внешний вид, альфа-сортировка должна работать правильно. Все это при условии, что вы работаете с существующей системой и не можете / не имеете права изменять тип данных поля.

Комментарии:

1. Я могу изменить тип данных полей, но у меня возникли проблемы с сортировкой столбца hte из созданного мной php-скрипта. Есть предложения?

2. Если вы на самом деле сортируете ее в самом скрипте, посмотрите на функцию usort() PHP: us3.php.net/manual/en/function.usort.php

3. хм, я хочу отсортировать данные в таблице SQL, но из PHP-скрипта. Вот что я пытался выполнить: mysql_select_db(«thoughtsdata»,$con); $order = mysql_query(«ВЫБРАТЬ * ИЗ порядка мыслей ПО дате и времени»); if(!$order,$con) { die(‘Не удалось упорядочить базу данных: ‘ . mysql_error());}

Ответ №2:

Лучший способ преобразовать ее, например, с помощью php, в «обычную» дату / время / временную метку, а не использовать сортировку.

Основная причина этого в том, что это намного быстрее, чем использование сортировки по строке.

Ответ №3:

Вы можете ПРИВЕСТИ или преобразовать varchar в реальное datetime, это то, что должно быть, поскольку это действительно datetime.