Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Запрос перестал давать данные


Автор: HipJ 3.9.2011, 17:51
Код

function getTournamentsActiveW() 
{
  global $DB;
    $current_week_start = date("Y-m-d", strtotime("last Monday"));
 $current_week_end = date("Y-m-d", strtotime("Sunday"));
  $DB->query('set names utf8');
  $DB->query('SET lc_time_names = "ru_RU"');
  $data = $DB->select(

    'SELECT t.name, cntr.cname, t.city, srf.sname, DATE_FORMAT(t.startDate,"%d %b.") AS startDate, DATE_FORMAT(t.endDate,"%d %b.") AS  endDate, t.www, t.typeId, t.livescore
    FROM wta t
    LEFT JOIN countrys cntr
    ON t.countryId = cntr.countryId
    LEFT JOIN surfaces srf
    ON t.surfaceId = srf.surfaceId
    WHERE  t.endDate BETWEEN ? AND  ?', $current_week_start, $current_week_end );
  return $data;
}



Запрос к SQL выдавал данные корректно, на протяжении года. На этой неделе перестал выдавать, даже при ручной постановке даты(?) WHERE  t.endDate BETWEEN ? AND  ? более ранней (когда работало), через PHP MyAdmin - не выводит ничего.
Если убрать WHERE  t.endDate BETWEEN ? AND  ?, то выводит всю таблицу, соответственно

Автор: Muerto 3.9.2011, 18:58
А что выдает это?
Код

 $current_week_start = date("Y-m-d", strtotime("last Monday"));
 $current_week_end = date("Y-m-d", strtotime("Sunday"));


функции date и strtotime использовать не стоит, лучше переходить на DateTime (смотри в доку)

Автор: HipJ 3.9.2011, 20:18
Цитата(Muerto @ 3.9.2011,  18:58)
А что выдает это?
Код

 $current_week_start = date("Y-m-d", strtotime("last Monday"));
 $current_week_end = date("Y-m-d", strtotime("Sunday"));


функции date и strtotime использовать не стоит, лучше переходить на DateTime (смотри в доку)

Выдает 
2011-08-29
2011-09-04

Просто не ясно, по какой причине не работает, если подставлять вручную даты в запрос?
По DateTime почитаю мануал, может поможет  smile 

Автор: Muerto 3.9.2011, 20:42
Цитата(HipJ @ 3.9.2011,  20:18)
Цитата(Muerto @ 3.9.2011,  18:58)
А что выдает это?
Код

 $current_week_start = date("Y-m-d", strtotime("last Monday"));
 $current_week_end = date("Y-m-d", strtotime("Sunday"));


функции date и strtotime использовать не стоит, лучше переходить на DateTime (смотри в доку)

Выдает 
2011-08-29
2011-09-04

Просто не ясно, по какой причине не работает, если подставлять вручную даты в запрос?
По DateTime почитаю мануал, может поможет  smile

mysql работает с определенным форматом даты... и если память не изменяет это не Y-m-d
возможно в этом проблема... вам следует погуглить посмотреть пример рабочий

Автор: HipJ 3.9.2011, 20:48
Даты хранятся в базе, тип поля Date, там формат именно такой 
Не понятен резкий отказ работать, вот в чем прикол... работал же год, даже два. На этой неделе отказался  smile 
Ничего не менялось в БД, данные не удалялись и не менялись  smile

Добавлено через 2 минуты и 40 секунд
Выход вижу один, копаться, тестировать другие варианты запросов.

Автор: Muerto 3.9.2011, 21:05
Начни с простого where, патом пропиши в ручную BETWEEN  одной и той же дате которая точно в базе есть....

Автор: HipJ 5.9.2011, 21:07
Ну что ж, починилось.. само  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)