当用户提交表单并更新日期类型时,我正试图从他们那里检索出生日期,但我无法更新日期类型。你能告诉我我做错了什么吗?
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;
}
试试这个:
$qr = $db->query("UPDATE ".USERS." SET dob = '$dob' WHERE id = '".$udata."'") or die(mysql_error());
不过,您应该考虑使用绑定参数——它避免了这类事情,并使您的代码更加安全。
编辑后添加:
关于绑定参数的手册页面有一些非常有用的示例。
在日期周围加引号,现在语句看起来像
UPDATE USERS SET dob = 01-02-2012 WHERE id = 'x'
在这种情况下,日期被视为一个数字(我认为是-2013年)
更好的方法是:使用准备好的语句(搜索PDO)并在日期参数中传递日期。
$udata是什么?你从哪里得到的?
如果它是一个类属性,那么在这种情况下,您需要用$this->udata
或$db::udata
来调用它,因为您似乎在调用一个静态类,或者如果两者都不是,则可能将其传递给函数。
此外,为什么您的查询是"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'"
,USERS发生了什么?当然,它应该只是"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'"
,并添加前面提到的$dob左右的"。