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.comentat 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% какая то ошибка, которую я в упор не вижу, поэтому сразу прошу простить и понять. Заранее спасибо!