Invalid datetime format: 1366 Incorrect integer value

столкнулся с проблемой с неправильным форматом данных, пробовал по разному, на форуме уже есть подобные вопросы, но для своего случая не увидел ответа. Прошу помочь.

Суть: пытаюсь добавить в базу данных массив с датами, и выдает ошибку о неправильном формате, полный текст ошибки:

Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column arenda_db.service.coment at row 1 in /Users/leonidbasov/Projects/zzz.lk.ru/lk/include/db.php:146 Stack trace: #0 /Users/leonidbasov/Projects/zzz.lk.ru/lk/include/db.php(146): PDOStatement->execute(Array) #1 /Users/leonidbasov/Projects/zzz.lk.ru/lk/modul/addservice.php(80): DBinsert('service', Array) #2 /Users/leonidbasov/Projects/zzz.lk.ru/lk/home.php(78): include('/Users/leonidba...') #3 {main} thrown in /Users/leonidbasov/Projects/zzz.lk.ru/lk/include/db.php on line 146

Код где я формирую даты:

Первая часть:

if ($colums[$key] == 'data_start') {
            echo "<p><small>С этой даты будет идти начисление, если тестовый период оставьте без заполнения:</small></p>";
            echo "<input class='form-control' type='date' name='{$colums[$key]}'></br>";
        }

Вторая часть:

if ($data) {
         if ($data['data_start']) {
            $data_start = $data['data_start'];
            $n = 1;
            $data_end = date('Y-m-d', strtotime($data_start.'+'.$n.' month'));
            $data['data_end'] = $data_end;
            $allowed = ['user_id', 'site_id','partner_id', 'partner_bonus', 'name', 'type', 'price', 'name', 'price_abon', 'price_seotrafik', 'price_adtrafik', 'data_start', 'data_end', 'coment'];
         }
         else {
            $allowed = ['user_id', 'site_id','partner_id', 'partner_bonus', 'name', 'type', 'price', 'name', 'price_abon', 'price_seotrafik', 'price_adtrafik', 'coment'];
         }
        DBinsert('service',$data,$allowed);

В базе mysql в этих полях у меня стоит тип поля DATE (не datetime или что то другое). Формат Y-m-d подогнал под формат хранения даты в базе.

Мой DBinsert:

function DBinsert($_table, array $_data_insert,$_allowed): bool
{
    global $pdo;
    $_data_key = array_keys($_data_insert); 
    if (array_diff($_data_key, $_allowed)) {
        throw new ErrorException('Incorrect field name');
    }
    $_data_key_str = implode(',', $_data_key);
    $_data_value_str = ':' . implode(',:', $_data_key);
    $data = $_data_insert;
    $sql = $pdo->prepare("INSERT INTO {$_table} ({$_data_key_str}) VALUES ({$_data_value_str})");
    if (!$sql) {
        echo "\nPDO::errorInfo():\n";
        print_r($pdo->errorInfo());
    }
    $sql->execute($data);
    echo 'Запись добавлена, давай следующую =)';
    return true;
}

100% какая то ошибка, которую я в упор не вижу, поэтому сразу прошу простить и понять. Заранее спасибо!


Ответы (0 шт):