Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更新MSSQL上为空的日期值?_Php_Sql Server - Fatal编程技术网

Php 如何更新MSSQL上为空的日期值?

Php 如何更新MSSQL上为空的日期值?,php,sql-server,Php,Sql Server,我正在创建一个提取用户信息的表单,用户可以根据需要更新他们的信息。表单上有两个日期字段,第二个字段是可选的。因此,当用户单击“更新”并且第二个日期字段为空时,在MSSQL数据库中,它会将日期字段更新为“01/01/1970”。我将PHP与MSSQL结合使用,因此在代码中我有: if(isset($_POST['update']) { $date_two = $_POST['date_two']; if($date_two == "") $date_two == NUL

我正在创建一个提取用户信息的表单,用户可以根据需要更新他们的信息。表单上有两个日期字段,第二个字段是可选的。因此,当用户单击“更新”并且第二个日期字段为空时,在MSSQL数据库中,它会将日期字段更新为“01/01/1970”。我将PHP与MSSQL结合使用,因此在代码中我有:

if(isset($_POST['update']) {

   $date_two = $_POST['date_two'];

   if($date_two == "")
      $date_two == NULL;
   else
     $date_two = date("Y-m-d", strtotime($date_two) );

   UPDATE table SET date_two = CAST('$date_two' as DATE2);

}

结果条目为1970年1月1日,而不是空值。

您应该检查输入日期值是否为空字符串(“”),并管理为空值,因为如果您的var值不为空(也是空字符串) 更新将生成一个日期值

    UPDATE table SET date_two = (case when  '$date_two' = '' then NULL 
                          else  CAST('$date_two' as DATE2)
                          end);

无论如何,您不应该在sql命令中使用PHPVAR,因为您在rusk进行sqlinjection。。对数据库驱动程序FIO或准备好的命令和绑定参数进行测试

@Jdeleon。。答案在案例条件周围更新为()