В моей базе данных столбец «номер месяца» (varchar) указывает месяц. (1 = январь, 12 = декабрь) Теперь мне нужно повторить название месяца вместо числа.
Я уже нашел несколько примеров, и мне кажется, что использование DateName( )
— правильный способ делать такие вещи. Но даже с этими примерами у меня не работает. Видимо я что-то упускаю, но не могу понять что...
Файл .htaccess:
RewriteRule ^example/([^/]+)/([^/]+)$ test?year=$1&monthnumber=$2 [L,QSA]
HTML/php:
<?php
$year= $_GET['year'];
$monthnumber= $_GET['monthnumber'];
$sql = "SELECT DISTINCT DateName( month, DateAdd( month , 'monthnumber' , -1 ) ) AS 'monthname', monthnumber, year FROM `exampletable` WHERE year = :year AND monthnumber = :monthnumber";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":year", $year);
$stmt->bindParam(":monthnumber", $monthnumber);
$stmt->execute();
if($result = $stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<?php echo strtolower($result['monthname']);?> <?php echo $result['year'];?>
<?php
}// end if
else {
echo '0 results';
}// end else
?>
Некоторые примеры строк (год, номер месяца)
(2014 8), (2014 7), (2013 8), ...
Когда я пытаюсь открыть example.com/2014/8
, он выдает "0 результатов" вместо "август 2014", в то время как мой старый код (месяц отображается как число) работает:
$sql = "SELECT DISTINCT monthnumber, year FROM `exampletable` WHERE year = :year AND monthnumber = :monthnumber";