无法使用php更新mysql中的日期类型

时间:2012-09-05 21:03:32

标签: php mysql date

我试图在用户提交表单并更新日期类型后从用户检索出生日期,但我无法更新日期类型。你能告诉我我做错了吗?

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

3 个答案:

答案 0 :(得分:1)

试试这个:

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

你应该看一下使用绑定参数 - 它避免了这种情况,并使你的代码更安全。

编辑添加:

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

答案 1 :(得分:1)

在日期附近加上引号,现在语句看起来像

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

这种情况下的日期被视为一个数字(-2013,我认为)。 ;)

更好:使用预准备语句(搜索PDO)并将日期传递给日期参数。

答案 2 :(得分:1)

什么是$ udata,你从哪里得到它?

如果它是一个类属性,那么在这种情况下你需要用$this->udata$db::udata来调用它,因为你似乎在调用一个静态类,或者如果是的话可能会将它传递给函数这些都不是。

另外,为什么您的查询"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'",USERS会发生什么?当然它应该只是"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'"并且如前所述在$ dob附近加上'。