如何将mysql NOW()函数从数组传递到已清理的值

时间:2017-08-06 12:02:09

标签: php mysql pdo

我正在制作更新数据库方法,一切正常,除非我尝试添加'更新' => NOW()到$ updateArray()。显然,PDO清理数据库中的mysql函数leave 0000-00-00。

public function update( $table, $id, $updateArray ) {

    $valuesArray = array_values( $updateArray );
    $valuesArray[] = $id;
    foreach ( $updateArray as $col => $value ) {
        $values .= "$col = ?, ";
    }
    $values = substr( $vals, 0, -2 );
    $query = $this->handle->prepare("UPDATE $table SET $values WHERE id = ?");

    return $query->execute( $valuesArray );
}
$updateArray = ['title' => $_POST["title"], 'label' => $_POST["label"], 'body' => $_POST["body"], 'updated' => 'NOW()'];
$db->update( 'pages', $_POST["id"], $updateArray );

什么是最好的方式来获得这个?我的所有想法都非常讨厌。

Sql structure

2 个答案:

答案 0 :(得分:0)

试一试。数据库看起来很好。

将查询更改为此。

$query = $this->handle->prepare("UPDATE $table SET $values, updated=now() WHERE id = ?");

更新此

$updateArray = ['title' => $_POST["title"], 'label' => $_POST["label"], 'body' => $_POST["body"]];

我认为放置这样的数据不会有任何伤害。评论结果或任何问题。

编辑1:

将数据库中更新的数据类型更改为DATE TIME。

$date = date("Y-m-d H:i:s", time());

$updateArray = ['title' => $_POST["title"], 'label' => $_POST["label"], 'body' => $_POST["body"], 'updated' => '$date'];

答案 1 :(得分:0)

我已经整理了一个now()函数,我不确定哪个函数最好,但它们都有效。

function now() {
    $date = new DateTime();
    $date->setTimezone(new DateTimeZone( 'Europe/London' ) );
    return $date->format( 'Y-m-d H:i:s' );
}

function now() {
    date_default_timezone_set( 'Europe/London' );
    return date( 'Y-m-d H:i:s' );
}
$updateArray = ['title' => $_POST["title"], 'label' => $_POST["label"], 'body' => $_POST["body"], 'updated' => now()];