2017-08-06 11 views
0

私は更新データベースメソッドを作成していますが、 'updated' => NOW()を$ updateArray()。明らかに、PDOはmysql関数を0000-00-00のままデータベースに残します。アレイからmysql NOW()関数をサニタイズされた値に渡すにはどうすればいいですか?

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); 

これをarroundにするにはどうすればよいですか?私の考えはすべて非常にハッキーです。

Sql structure

+0

問題のデータ型でSQL構造体を配置します。 –

答えて

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()]; 
0

これを試してください。データベースは正常に見えます。

これにクエリを変更します。この

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

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

更新私はこのようなデータを置くためにどんな害があるだろうとは思いません。あなたの結果や問題の下にコメントする。

EDIT 1:データベース内のDATEのTIMEに更新の

変更データ型。

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

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

この問題は、クラスを別のデータベーステーブルで再利用できるようにすることです。私はif/elseを試みましたが、それは非常にハッキーです。よりクリーンな方法が必要です。 – Benwhittaker25

+0

更新プログラムは機能しましたか? –

+0

はい両方の方法が機能します。 – Benwhittaker25

関連する問題