0

一旦用户提交表单并更新日期类型,我就会尝试从用户那里检索出生日期,但我无法更新日期类型。你能告诉我我做错了什么吗?

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

3 回答 3

1

尝试这个:

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

不过,您应该考虑使用绑定参数 - 它避免了这种事情,并使您的代码更加安全。

编辑添加:

绑定参数的手册页 有一些非常有用的示例。

于 2012-09-05T21:06:40.310 回答
1

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

如果它是一个类属性,那么您需要使用$this->udataor$db::udata在这种情况下调用它,因为您似乎正在调用一个静态类,或者如果它们都不是,则可能将其传递给函数。

还有为什么你的查询"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'",用户发生了什么?当然它应该只是"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'"像前面提到的那样在 $dob 周围添加''。

于 2012-09-05T21:08:47.100 回答
1

在日期周围加上引号,现在声明看起来像

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

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

更好的是:使用准备好的语句(搜索 PDO)并在日期参数中传递日期。

于 2012-09-05T21:07:12.523 回答