Получение записей между 2 датами кто-то выбирает php mysql - PullRequest
0 голосов
/ 17 февраля 2011

Я пытаюсь получить записи между 2 датами. Даты вводятся в виде «гггг-мм-дд» в поле ввода type = «text» (так, например, я бы набрал «2011-02-15» в поле ввода текста), а затем публикуем на следующей странице, которая запрос:

$start = $_POST["start"];
$end = $_POST["end"];

$sql_query = "SELECT * FROM actionlist WHERE date>='{$start} 00:00:00'  AND date<='{$end} 23:59:59'   ORDER BY id";
$result = mysql_query($sql_query);

Записи в таблице «список действий» имеют поле с именем «дата», и оно вводится автоматически при создании записи с помощью «$ date = date ('Y-m-d H: i: s')".

Во всяком случае, я не могу получить какие-либо записи для выбора. Нужно ли как-то обрабатывать переменные $ start и $ end? Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Вы можете использовать между, чтобы получить информацию, которую вы хотите

$sql_query = "SELECT * FROM actionlist WHERE date BETWEEN '$start' AND '$end' ORDER BY id";

Но вы должны убедиться, что начало и конец действительны, а также экранированы и т. Д., Чтобы предотвратить инъекцию sql и т. П.

1 голос
/ 17 февраля 2011
$start = mysql_real_escape_string(trim($_POST["start"]));
$end = mysql_real_escape_string(trim($_POST["end"]));

$sql_query = "SELECT * FROM actionlist WHERE date BETWEEN '".$start." 00:00:00' AND '".$end." 23:59:59' ORDER BY id";
$result = mysql_query($sql_query) or die(mysql_error());

Редактировать: trim (), если в ваших формах ввода есть свободное место; тогда немного санитарии и используй МЕЖДУ, как все предлагали прямо передо мной (черт, я так медленно пишу ...)

Редактировать 2 на основе комментария ниже

1 голос
/ 17 февраля 2011

Попробуйте таким образом

SELECT * FROM actionlist WHERE date BETWEEN 'start' AND 'end'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...