MySQL вставка устанавливает дату 30.11.-0001, если пусто - PullRequest
0 голосов
/ 23 октября 2019

У меня есть форма, куда я могу вставить некоторые данные, которые хранятся на сервере.

Форма содержит много полей даты. Я заметил, что если я оставил поле даты пустым, то оно устанавливается на 30.11.-0001

Как я могу просто сохранить пустую строку, если поле даты пустое?

Значение по умолчанию для полей даты установлено в NULL в phpmyadmin.

Метод вставки:

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);
}

1 Ответ

0 голосов
/ 23 октября 2019

Решение состоит в том, чтобы проверить, являются ли значения пустыми, и установить их в NULL, прежде чем сохранять их в базе данных, если они есть.

$data["release_date"] = (strtotime($data["release_date"]) === false) ? NULL : $data["release_date"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...