PHP MYSQL,1292:日期值不正确:''对于第1行的列'sale_date'

时间:2017-09-06 16:26:35

标签: php mysql

我有一个MySQL数据库,其中包含一个客户表和一个人(用于测试)表。我的HTML,PHP和脚本在person表中按预期工作。在我的客户表中使用相同的编码时,我得到以下错误“1292:不正确的日期值:''用于第1行的'sale_date'列。

我的HTML代码如下:

<label>Sale Date:&nbsp <input id="cSaleDate" class="cSale" type="date" name="cSaleDate"></label>

我的PHP代码:

$sale_date = mysqli_real_escape_string($db,$_POST['cSaleDate']);

if (isset($_POST['cSaleDate']))
    {
        include_once('client.php');
        $saleDate = date('0000-00-00', strtotime($sale_date));
        if (!empty($_POST['cSaleDate']))
        {
            $saleDate = date('Y-m-d', strtotime($sale_date));
        }
    }

$fields = 'fips_code, size_code, client_name, client_state, sale_date';
$values = "'$fips_code', '$size_code', '$client_name', '$client_state', '$saleDate'";

$sql = "INSERT INTO clients ($fields) VALUES ($values)";

销售日期的列设置为:

Name: sale_date
Datatype: DATE
Default: NULL

如前所述,此代码适用于“person”表中的日期,但不适用于“clients”表。我在两个表上都设置了相同的日期列。关于为什么这个适用于一个桌子而不是另一个桌子的任何帮助或想法将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的代码在很大程度上取决于/me?metadata=true,如果您实际上没有获得该值,则会从您提供的代码段中取消,$_POST['cSaleDate']将是未定义的。这是我最好的猜测问题。

以下是重写该代码段的可能方法:

$saleDate

答案 1 :(得分:0)

谢谢大家的帮助。我最终在插入中使用了一个三元语句,这允许我插入&#39; NULL&#39;如果输入留空,则进入数据库中的日期字段。

$sql = "INSERT INTO table (SaleDate) VALUES (" . ($saleDate == '' ? 'NULL' : "'$saleDate'") . ")"