LAST_DAY daje dziwny wynik ?

0

Mam taki skrypt w php:

<?php date_default_timezone_set('Europe/Warsaw'); $pdo = new PDO('mysql:host=localhost;dbname=jakasbaza', 'user', 'haslo'); $pdo->exec('create table daty ( dzien date );'); $pdo->exec("insert into daty (dzien) values ('2014-01-11'), ('2015-02-22')"); $stmt = $pdo -> prepare("SELECT dzien FROM daty WHERE dzien < LAST_DAY('2014-12-1')"); $stmt -> execute(); while($row = $stmt -> fetch()) echo $row['dzien']."\n"; $stmt -> closeCursor(); echo "************\n"; $stmt = $pdo -> prepare("SELECT dzien FROM daty WHERE dzien < :limit"); $stmt -> bindValue(":limit", "LAST_DAY('2014-12-1')", PDO::PARAM_STR); $stmt -> execute(); while($row = $stmt -> fetch()) echo $row['dzien']."\n"; $stmt -> closeCursor(); Wynikiem skryptu jest: 2014-01-11 ************ 2014-01-11 2015-02-22 Czyli pierwsza wersja zachowuje się prawidłowo a druga nie. Co ciekawe jak zamienię "LAST_DAY('2014-12-1')" przez jej wynik czyli '2014-12-31' to obie wersje działają dobrze. Jaki błąd popełniam przekazując "LAST_DAY('2014-12-1')" jako parametr ?
2

Jest traktowany jako string, a nie funkcja. W końcu tak to zdefiniowałeś - PDO::PARAM_STR

0

Masz rację. Powinienem użyć:
$stmt = $pdo -> prepare("SELECT dzien FROM daty WHERE dzien < LAST_DAY(:limit)");
$stmt -> bindValue(":limit",'2014-12-1', PDO::PARAM_STR);

Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1