PHP Mysql空白日期字段值提交

PHP Mysql空白日期字段值提交,php,mysql,Php,Mysql,在我的表单上,有一个日期字段不是必填字段。我的问题是,如果用户不填写此字段,他们在mysql db上提交表单,而不是将此字段留空,它将保存1969-12-31,如果此字段再次留空,则当天提交的任何后续表单将从1969-12-31起递增日期。我应该修改什么,以便mysql将该字段留空。谢谢你的阅读 代码如下: <input id="nfud" name="nfud" type="date" class="input-small"/> 在mysql中,给日期字段一个默认值0。如果您没有

在我的表单上,有一个日期字段不是必填字段。我的问题是,如果用户不填写此字段,他们在mysql db上提交表单,而不是将此字段留空,它将保存1969-12-31,如果此字段再次留空,则当天提交的任何后续表单将从1969-12-31起递增日期。我应该修改什么,以便mysql将该字段留空。谢谢你的阅读

代码如下:

<input id="nfud" name="nfud" type="date" class="input-small"/>

在mysql中,给日期字段一个默认值0。

如果您没有在表单中发布日期,请将该字段留空:

if(isset($_POST["nfud$n"]) {
    $nfud = date('Y-m-d', strtotime($_POST["nfud$n"]));
} else {
    $nfud = "";
}
$query="insert into number_info (phone_number, data_plan, phone_used, fud, dealID) 
values ('".$nphone_number."','".$ndata_plan."','".$nphone_used."', '".$nfud."','$dealID')";
        mysql_query($query) or die(mysql_error());
编辑:试着让MySQL为你的列设置一个默认值

if(isset($_POST["nfud$n"]) {
    $nfud = date('Y-m-d', strtotime($_POST["nfud$n"]));
    $query="insert into number_info (phone_number, data_plan, phone_used, fud, dealID) 
            values ('".$nphone_number."','".$ndata_plan."','".$nphone_used."','".$nfud."','$dealID')";

} else {
    $query="insert into number_info (phone_number, data_plan, phone_used, dealID) 
            values ('".$nphone_number."','".$ndata_plan."','".$nphone_used."','$dealID')";
}

mysql_query($query) or die(mysql_error());

这可以在mysql端通过默认设置和其他设置进行控制

您可以在mysql中运行以下内容并共享结果吗

SHOW CREATE TABLE number_info;

日期字段是否设置为非空?谢谢您的回复。我试过这个,唯一改变的是现在的日期没有上升,而是停留在1970-01-01。我甚至试过做
$nfud=“0000-00-00”但仍在保存1970-01-01。我还将mysql日期字段的默认值设置为0000-00-00尝试编辑,但我不确定它是否有效,您的字段类型是date还是DATETIME?对于DATETIME,您不能存储空值Nope,它不起作用。它实际上给了我一个语法错误。sql字段是DATE。更新为仅在有日期时插入日期,否则让MySQL输入默认值。将默认空值设置为日期列仍然无效。我一直在阅读,它似乎与使用strotime有关。谢谢你的回复。我将mysql日期字段设置为默认0000-00-00,但在提交表单时,1970-01-01仍然保存为头,我运行了它,但我不确定应该显示什么结果。MySql只是说
CREATE TABLE`number\u info`(`numberID`int(11)…。
Yes,这就是它应该显示的内容。您能显示完整的输出吗?
SHOW CREATE TABLE number_info;