В чём может быть проблема с этим кодом? Не получается обновить статью в базе.
/**
* Updates the current Article object in the database.
*/
public function update() {
// Does the Article object have an ID?
if ( is_null( $this->id ) ) trigger_error ( "Article::update(): Attempt to update an Article object that does not have its ID property set.", E_USER_ERROR );
// Update the Article
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "UPDATE articles SET publicationDate=FROM_UNIXTIME(:publicationDate), endPublicationDate=:FROM_UNIXTIME(:endPublicationDate), title=:title, summary=:summary, content=:content, ptype=:ptype, dtype=:dtype WHERE id=:id";
$st = $conn->prepare ( $sql );
$st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
$st->bindValue( ":endPublicationDate", $this->endPublicationDate, PDO::PARAM_INT );
$st->bindValue( ":title", $this->title, PDO::PARAM_STR );
$st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
$st->bindValue( ":content", $this->content, PDO::PARAM_STR );
$st->bindValue( ":ptype", $this->ptype, PDO::PARAM_STR );
$st->bindValue( ":dtype", $this->dtype, PDO::PARAM_STR );
$st->bindValue( ":id", $this->id, PDO::PARAM_INT );
$st->execute();
$conn = null;
}
И код для восстановления данных из бд:
public function storeFormValues ( $params ) {
// Store all the parameters
$this->__construct( $params );
// Parse and store the publication date
if ( isset($params['publicationDate']) ) {
$publicationDate = explode ( '-', $params['publicationDate'] );
if ( count($publicationDate) == 3 ) {
list ( $y, $m, $d ) = $publicationDate;
$this->publicationDate = mktime ( 0, 0, 0, $m, $d, $y );
};
};
// Parse and store the end publication date
if ( isset($params['endPublicationDate']) ) {
$endPublicationDate = explode ( '-', $params['endPublicationDate'] );
if ( count($endPublicationDate) == 3 ) {
list ( $y, $m, $d ) = $endPublicationDate;
$this->endPublicationDate = mktime ( 0, 0, 0, $m, $d, $y );
};
};
}
/**
* Returns an Article object matching the given article ID
*
* @param int The article ID
* @return Article|false The article object, or false if the record was not found or there was a problem
*/
public static function getById( $id ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate, UNIX_TIMESTAMP(endPublicationDate) AS endPublicationDate FROM articles WHERE id = :id";
$st = $conn->prepare( $sql );
$st->bindValue( ":id", $id, PDO::PARAM_INT );
$st->execute();
$row = $st->fetch();
$conn = null;
if ( $row ) return new Article( $row );
}
При этом, если из кода getById не убирать конструкцию FROM_UNIXTIME, то время не восстанавливается. Но если задать запрос в таком виде, то получается ахинея, вида
А вставить в таком виде, конечно, не получается.
Я чего-то не понимаю. Оно, получается, инициализируется вот этим непонятным и не работает, а без этого не восстанавливается.
Что делать-то? Как изменить код?