php - 如果为空,MySQL 插入将日期设置为 30.11.-0001

标签 php mysql mysqli

我有一个表单,可以在其中插入一些存储在服务器中的数据。

该表单包含许多日期字段。我注意到,如果我将日期字段留空,则会将其设置为 30.11.-0001

如果日期字段为空,如何存储空字符串?

日期字段的默认值在 phpmyadmin 中设置为 NULL。

插入方法:

public function insert($data)
{
    if (empty($data)) {
        error_log(get_class() . " - " . __FUNCTION__ . " : data not set or empty");
        return false;
    }

    $now = date("Y-m-d H:i:s");

    $sql = " INSERT INTO ". self::TABLE
            ." ( "
                . "  property_id"
                . ", country_id"
                . ", property_item_type_id"
                . ", prio"
                . ", reg_date"
                . ", reg_no"
                . ", files_no"
                . ", release_date"
                . ", entry_date"
                . ", status"
                . ", runtime_max"
                . ", runtime_payed"
                . ", prio_date"
                . ", info"
                . ", create_date"
                . ", create_by"
                . ", update_date"
                . ", update_by"
            . " ) "
        . " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $this->con->prepare($sql);
    $stmt->bind_param(
        "iiiissssssssssssss"
        // i
        ,$data["property_id"]
        ,$data["country_id"]
        ,$data["property_item_type_id"]
        ,$data["prio"]
        // s
        ,$data["reg_date"]
        ,$data["reg_no"]
        ,$data["files_no"]
        ,$data["release_date"]
        ,$data["entry_date"]
        ,$data["status"]
        ,$data["runtime_max"]
        ,$data["runtime_payed"]
        ,$data["prio_date"]
        ,$data["info"]
        ,$now
        ,$data["email"]
        ,$now
        ,$data["email"]
    );
    $stmt->execute();

    $message["error"] = "Unable to insert new item!";
    return $this->checkAffectedRows($stmt, $message);
}

最佳答案

解决方案是检查值是否为空,如果为空,则将其设置为 NULL,然后再将其存储到数据库。

$data["release_date"] = (strtotime($data["release_date"]) === false) ? NULL : $data["release_date"];

关于php - 如果为空,MySQL 插入将日期设置为 30.11.-0001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58525671/

相关文章:

php - 根据 Woocommerce 产品循环中的日期时间规则显示下一个交货日

php - 可点击 echo $query ['name' ];

MySQL 选择喜欢和

python - Pandas to_sql 在重复的主键上失败

java - NoClassDefFound错误: org/aspectj/lang/Sign

php - 在foreach循环问题中下载多个文件

php - 我无法使用 sql 查询数据填充数组以将其导出为 php 中的 json 对象

php - 警告 : mysqli_close() expects parameter 1 to be mysqli

php - 如何使用password_hash更改密码?

php - 使用 PDT 和 MakeGood 让 PHPUnit 测试在 Eclipse 中工作