我已经搜索了该网站,虽然我发现了类似的问题和答案,但我一直无法找到答案。经过4个小时的搜索后,我决定咬紧牙关,问问题。使用MySql在数据库中输入日期或空值
我有4个不需要的窗体中的日期字段。如果其中一个字段有条目,我希望它将日期输入到数据库中;如果任何一个字段留空,我希望它输入一个日期。
我有一个if语句来检查值是否为空,如果是这样的话$value = null
,否则使用$value = date("Y-m-d",strtotime($_post['value']))
将它转换为日期,这很好。
问题出在我的查询中。如果我使用'$ value',它会正确插入日期,但不会插入空值,因为使用'null'会使sql认为它是一个字符串。如果我只使用$ value,那么null插入就好了,但是日期以0000-00-00的形式出现。
任何意见将非常感激
感谢迄今意见...
空是允许的,这是我的脚本...
if(empty($_POST['fp32_original_install_date'])){
$fp32_install = NULL;
}else{
$fp32_install = date("Y-m-d",strtotime($_POST['fp32_original_install_date']));
}
$sql = "INSERT INTO accounts_cstm (id_c, support_c, install_date_c, sware_renewal_date_c, product_key_c, account_status_c, fp32_support_type_c, fp32_support_renewal_date_c, fp32_original_install_date_c) VALUES ('$Guid','$cdr_support', '$cdr_install', '$cdr_renew', '$prod_key', '$account_status', '$fp32_support', '$fp32_renew', $fp32_install)";
如果我在使用查询$ fp32_install一个空值进入就好,但日期进入作为0000-00-00,如果我使用'$ fp32_install'日期进行罚款,但NULL值作为1970-01-01进入(可能是因为它将'NULL'视为一个字符串)
如果我回显$ fp32_install,则值显示为2012-08-16,列的SQL类型为日期,默认值为NULL
不会使用具有适当占位符的PDO来处理您的转义吗? – tadman 2012-08-16 16:06:44
看来你在MySQL上的日期字段不允许为'NULL' – GusDeCooL 2012-08-16 16:06:50
请在你的问题中包含你的代码。当我们看到代码示例时,回答起来要容易得多。 – kapa 2012-08-16 16:06:59