我正在制作更新数据库方法,一切正常,除非我尝试添加'更新' => 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 );
什么是最好的方式来获得这个?我的所有想法都非常讨厌。
答案 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()];