Prázdné hodnoty z formuláře jako NULL do DB
- elektricman
- Člen | 29
Mám problém při ukládání dat z formuláře do MySQL databáze.
V DB je položka date
typu DATETIME
které mohou
být NULL
a mají výchozí hodnotu NULL
.
Ve formuláři když tuto položku nevyplním, a vezmu data z formuláře a
rovnou je vložím do DB přes DIBI, tak se tam snaží dát prázdný
string.
<?php
$this->model->insert($form->getValues());
?>
Což se databázi nelíbí a vyhodí chybu
Incorrect datetime value: '' for column 'date' at row 1
. SQL je
následující:
INSERT INTO `serviceteam` (`name`, `surname`, `nickname`, `birthnumber`, `email`, `tel`,
`date`, `note`, `note_iternal`)
VALUES ('Někdo', 'Nevimkdo', 'Hovado', '000000/0000', 'neco@neco.cc', '', '', '', '')
Jak najlépe docílit toho, aby se tam DIBI nesnažilo vkládat
''
ale NULL
?
Editoval elektricman (18. 1. 2010 21:42)
- Bernard Williams
- Člen | 207
Nazdárek,
zatím jediné, co mě napadá, je to rozepsat a použít modifikátor %sn:
$data = $form->getValues();
dibi::query('INSERT INTO [table] (column1) VALUES (%sn);', $data['key1']);
Bernard
- David Grudl
- Nette Core | 8227
co nějaké
foreach ($values as & $value) if ($value === '') $value=NULL
- elektricman
- Člen | 29
2David, to mě napadlo, ale říkal sem si jestli to nejde líp
2Michal: Jako např totok .. fahčí skvěle.. díky!
- David Grudl
- Nette Core | 8227
V poslední revizi lze použít
ArrayTools::renameKey($values, 'date', 'date%sn');