首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL PDO NOW()作为赋值-可能吗?

问MySQL PDO NOW()作为赋值-可能吗?
EN

Stack Overflow用户
提问于 2013-04-12 18:10:04
回答 2查看 1.2K关注 0票数 0

我试图通过PHP将MySQL的NOW()函数传递给PDO的赋值,但失败了。我发现我必须将它直接传递到MySQL语句中。但在我的例子中,有时datetime字段可能为空。

是否有可能将NOW()作为PHP的赋值传递?

下面是一些代码:

我正在动态构建查询,而datetime依赖于其他变量的值。

代码语言:javascript
复制
if(isset($accountStatus)&&$accountStatus!=""){
    $tmp[':account_status']=$accountStatus;
    if($accountStatus==0){
        $tmp[':vCodeExpire']="NOW() + INTERVAL 1 WEEK";
        $tmp[':verified']=0;
    }else{
        $tmp[':verified']=1;
    }
}

构建SQL查询:

代码语言:javascript
复制
$sql="";
foreach($tmp as $k=>$v){
    $sql.=str_replace(":","",$k)."=".$k.",";
}
$sql=substr($sql,0,strlen($sql)-1);

然后,我运行PDO查询:

代码语言:javascript
复制
$db=$pdo->prepare("UPDATE users SET $sql WHERE id=:id");
$db->execute($tmp);

我尝试在NOW() + INTERVAL 1 WEEK周围用单引号代替双引号,但没有成功。我也尝试过在PDO查询两边使用单引号,但随后$sql被直接传递,而不是使用赋值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-12 18:17:36

这有可能吗?

不是的。

有两种解决方案。

  1. 使用PHP计算过期日期。例如date('Y-m-d',strtotime('+1 week'))
  2. Create作为查询的条件部分

if(isset($accountStatus)&&$accountStatus!=""){ $tmp‘:account_status’=$account status;if($accountStatus==0){ $accSql = "NOW() + INTERVAL 1 WEEK,";$tmp‘:已验证’=0;}else{ $accSql ='';$tmp‘:已验证’=1;} $db=$pdo->prepare("UPDATE users SET $accSql $sql WHERE id=:id");

票数 1
EN

Stack Overflow用户

发布于 2013-04-12 18:22:33

使用strtotime()而不是MySQL来获取日期值。

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

https://stackoverflow.com/questions/15968620

复制
相关文章

相似问题

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