为了账号安全,请及时绑定邮箱和手机立即绑定

通过php在mysql中用空值更新日期时间

通过php在mysql中用空值更新日期时间

PHP
拉丁的传说 2021-12-24 15:29:44
我正在使用此代码将我的数据时间字段更新为 NULL,php 版本 7.3.7    if($_POST['value']=='0000-00-00 00:00:00'){      $timestamp=NULL;    }else {      $dateTime = $_POST['value'];      $timestamp = date('Y-m-d H:i', strtotime($_POST['value']));   }$query="update forms set $_POST[limitInputField]='$timestamp' where  formid='$_POST[formId]'";$result=$dbCnn->query($query)or die($dbCnn->error);当 $timestamp 为空时它会出错:日期时间值不正确:'' for column farsifor_m.forms.enddate 在第 1 行但是,当我引用“NULL”并删除查询中 $timestamp 周围的引号时,如果 $timestamp 为 null,则它可以正常工作,但如果 $timestamp 值不为 null,则会出现错误。   if($_POST['value']=='0000-00-00 00:00:00'){     $timestamp="NULL";   }else {     $dateTime = $_POST['value'];     $timestamp = date('Y-m-d H:i', strtotime($_POST['value']));   }  $query="update forms set $_POST[limitInputField]=$timestamp where       formid='$_POST[formId]'";    $result=$dbCnn->query($query)or die($dbCnn->error);
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

学习使用准备好的语句;并且不要注入 post 变量来“构建”查询。话说回来:

您可以NULLIF使用方便。在以下示例中,特定值0000-00-00 00:00:00将转换为 NULL:

UPDATE forms SET col = NULLIF(:timestamp, '0000-00-00 00:00:00') WHERE formid = :formid

或者你可以简单地:

UPDATE forms SET col = :timestamp WHERE formid = :formid

并使用 PHP 传递包含字符串或null.


查看完整回答
反对 回复 2021-12-24
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您可以通过对代码进行一些细微更改来解决此问题(注意单引号和双引号):


    if($_POST['value']=='0000-00-00 00:00:00'){

      $timestamp="NULL";

    }else {

      $dateTime = $_POST['value'];

      $timestamp = "'".date('Y-m-d H:i', strtotime($_POST['value']))."'";

   }

$query="update forms set $_POST[limitInputField]=$timestamp where  formid='$_POST[formId]'";

这样,如果您在时间戳中设置 NULL 值,则查询将如下所示:


update forms set limitInputField=NULL where formid='123'

但是如果你在那里放一个值,它看起来像这样:


update forms set limitInputField='2019-09-03 17:08' where formid='123'

重要的是要注意在设置值时 NULL 周围没有引号,但在日期周围有引号。


查看完整回答
反对 回复 2021-12-24
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

$date = $_POST['Date']; //get date from form

$time = $_POST['Time']; //get time from form


if(strtotime($date.$time)==0){ // check if null or not 

    $AboutDate = "0000-00-00 00:00:00"; 

}else{                        

    $AboutDate = date("Y-m-d H:i", strtotime($date.$time)); 

}

然后更新/插入 SQL


UPDATE xxx(table) SET xxx(column) = NULLIF('$AboutDate','0000-00-00 00:00:00') WHERE xxxx = xxxxx

我们走吧宝贝


查看完整回答
反对 回复 2021-12-24
  • 3 回答
  • 0 关注
  • 289 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信