我试图通过 PHP 将 MySQL 的 NOW()
函数传递到 PDO 的分配值中,但失败了。我发现我必须将其直接传递到 MySQL 语句中。但就我而言,有时datetime
字段可能为空。
是否可以将 NOW()
作为 PHP 的分配值传递?
一些代码:
我正在动态构建查询,并且日期时间
取决于其他一些变量的值。
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,而不是使用分配的值。
最佳答案
is it possible?
没有。
有两种解决方案。
- 使用 PHP 计算到期日期。类似于
date('Y-m-d',strtotime('+1 week'))
为查询创建条件部分
if(isset($accountStatus)&&$accountStatus!=""){ $tmp[':account_status']=$accountStatus; if($accountStatus==0){ $accSql = "NOW() + INTERVAL 1 WEEK,"; $tmp[':verified']=0; }else{ $accSql =''; $tmp[':verified']=1; } $db=$pdo->prepare("UPDATE users SET $accSql $sql WHERE id=:id");
关于php - MySQL PDO NOW() 作为指定值 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968620/