2012-09-05 61 views
0

我試圖從用戶提取表單並更新日期類型後檢索出生日期,但我無法更新日期類型。你能告訴我我做錯了什麼嗎?無法使用php更新mysql中的日期類型

if($_POST){ 
    $dob = date('Y-m-d',strtotime($_POST['year']."-". $_POST['month']."-".$_POST['day'])); 

    $retur = $userObj->updateProfile($dob); 
} 

public function updateProfile($dob){ 
$db = db_mysql::getInstance(); 
$qr = $db->query("UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'") or die(mysql_error()); 

     return $udata; 
} 
+0

什麼是mysql錯誤返回? – BugFinder

+0

什麼是$ udata? –

+0

沒有錯誤返回。 –

回答

1

試試這個:

$qr = $db->query("UPDATE ".USERS." SET dob = '$dob' WHERE id = '".$udata."'") or die(mysql_error()); 

你應該看看使用綁定參數,但 - 它避免了這樣的事情,以及使你的代碼有很多更安全。

Editted補充:

The manual page on binding parameters有一些非常有用的例子。

+0

似乎已經工作...我會研究綁定的參數。謝謝! –

+0

你能提供一個綁定參數或鏈接的例子嗎? –

+0

@ClaudeGrecea - 我添加了一個手冊頁的鏈接 – andrewsi

1

周圍的日期用引號,現在的聲明看起來像

UPDATE USERS SET dob = 01-02-2012 WHERE id = 'x' 

在這種情況下,日期被看作是一個數(-2013,我認爲)。 ;)

甚至更​​好:使用預準備語句(搜索PDO)並在日期參數中傳遞日期。

+0

如果我使用strtotime(),它怎麼能被看作一個數字? –

1

什麼是$ udata,你從哪裏得到它?

如果它是一個類屬性,那麼你需要在這種情況下,與$this->udata$db::udata調用它,因爲你似乎是調用靜態類或也許它傳遞給函數如果沒有這些。

此外,爲什麼您的查詢"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'",用戶發生了什麼?當然,它應該只是"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'"並且像前面提到的那樣添加「$ dob」。