首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用php更新mysql中的日期类型

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

Stack Overflow用户
提问于 2012-09-06 05:03:32
回答 3查看 300关注 0票数 0

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

代码语言:javascript
复制
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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-06 05:06:40

试试这个:

代码语言:javascript
复制
$qr = $db->query("UPDATE ".USERS." SET dob = '$dob' WHERE id = '".$udata."'") or die(mysql_error());

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

编辑后添加:

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

票数 1
EN

Stack Overflow用户

发布于 2012-09-06 05:07:13

用引号将日期括起来,现在语句看起来像

代码语言:javascript
复制
UPDATE USERS SET dob = 01-02-2012 WHERE id = 'x'

本例中的日期被视为一个数字(我认为是-2013)。;)

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

票数 1
EN

Stack Overflow用户

发布于 2012-09-06 05:08:47

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

如果它是一个类属性,那么在本例中您需要使用$this->udata或$db::udata来调用它,因为您似乎是在调用一个静态类,或者如果它不是这两个类中的一个,则可能将它传递给函数。

还有为什么你的查询是"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'",用户是怎么回事?当然,它应该只是"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'",并在前面提到的$dob周围添加'‘。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12289748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档