- 1
- 2
- 3
- 4
- 5
- 6
$res = mysql_query('select `date` from `pic`');
while($data = mysql_fetch_row($res)){
if(date('d.m.y') != date('d.m.y',$data[0])) continue;
$countPicToday++;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+164
$res = mysql_query('select `date` from `pic`');
while($data = mysql_fetch_row($res)){
if(date('d.m.y') != date('d.m.y',$data[0])) continue;
$countPicToday++;
}
Не понятно. Почему нельзя было использовать COUNT() и WHERE
Временный код, пока автор не напишет свою субд на πхπ
O(π×π)
И произносится хороно: пижды пи.
Скоро, во всех браузерах страны.
В InnoDB же нет никакой разницы, есть WHERE или нет, потому что в любом случае строки придётся пересчитывать.
Это и послужило почвой для «жёлтых» статей с заголовками типа «В InnoDB COUNT() тормозит!!!11адын-адын-адын».
• потому что в MySQL функция DATE_FORMAT() и сравнение строк тормозят;
• в PHP был вызов date_default_timezone_set, поэтому DATE_FORMAT() и date() возвращают разные результаты.
WHERE date >= mktime(0,0,0) AND date < mktime(0,0,0) + 86400
Во-вторых, mktime не нужно, потому что сравниваются две готовые даты.
В-третьих, в SQL есть и функция DATE(), округляющая до целой даты, и выражение "+1 day", так что высчитывать количество секунд в сутках не нужно.
2. Не понял, что значит "две готовые даты". Судя по запросу date имеет тип int.
3. DATE "огругляет", да. Прощайте индексы.
Тру ПХП-вей: вместо того, чтобы заглянуть в документацию, написать самому.
Ну а вообще, я сторонник языков, где скобки однозначно влияют на смысл :) и в произвольном порядке их не расставить.
2. Виноват, не подумал о том, что mktime с опущенными аргументами как раз возвращает текущую дату, округлённую до нужного состояния. В Вашем выражении надо уточнить, что mktime — функция PHP, а не SQL.
3. А мы будем округлять не поле date, а текущее время. Тогда с индексами будет всё нормально.
Итого:
Или, если MySQL и PHP работают по одному времени, то
//это не спам. Просто чтобы побольше людей увидело. Не удаляйте, пожалуйста.