我试图通过PHP将MySQL的NOW()函数传递给PDO的赋值,但失败了。我发现我必须将它直接传递到MySQL语句中。但在我的例子中,有时datetime字段可能为空。
是否有可能将NOW()作为PHP的赋值传递?
下面是一些代码:
我正在动态构建查询,而datetime依赖于其他变量的值。
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查询:
$sql="";
foreach($tmp as $k=>$v){
$sql.=str_replace(":","",$k)."=".$k.",";
}
$sql=substr($sql,0,strlen($sql)-1);然后,我运行PDO查询:
$db=$pdo->prepare("UPDATE users SET $sql WHERE id=:id");
$db->execute($tmp);我尝试在NOW() + INTERVAL 1 WEEK周围用单引号代替双引号,但没有成功。我也尝试过在PDO查询两边使用单引号,但随后$sql被直接传递,而不是使用赋值。
发布于 2013-04-12 18:17:36
这有可能吗?
不是的。
有两种解决方案。
date('Y-m-d',strtotime('+1 week'))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");
发布于 2013-04-12 18:22:33
使用strtotime()而不是MySQL来获取日期值。
https://stackoverflow.com/questions/15968620
复制相似问题