Autor Zpráva
PavV
Profil
Zdravím,

po přenesení apky na forpsi.com mi php hází
Chyba sql INSERT clen (id,farnost,jkresni,jbirmovani,prijmeni,pr_rodne,povolani,dat_naroz,misto_naroz,ulice,psc,obec,mail,datovaschr,ucet,zpusob,poznamky) VALUES (0,20,'jm','','pw','','','2024-06-24','','','66666','66666666','','','','křest','');SET @id = LAST_INSERT_ID();INSERT gdpr VALUES ('clen',NOW(),@id,'85.193.34.145',6,'vloženo'); PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '0000-00-00' for column 'clen_od' at row 1..

na předchozím serveru vše ok

Ve formuláři jsou všechny datumové položky definovány
$this->dial["text"].= "<tr bgcolor='#99CCCC'><td>Člen od</td><td><input name='clen_od' id='clen_od' type='date' value=".$r["clen_od"]."></td>";

Data odesílám pomocí ajaxu (jquery) přes var formData = new FormData( $("#myform")[0]);

Do SQL se nevládají datumy nejsou-li vyplněné (nevím zda je to záležitost FormData)

Databázové tabulce jsou položky typu date.

Jakmile je první položka typu DATE prázdná, vyhodí výše popsanou hlášku. Vezmu-li sql do bloku a přenesu do phpMyAdmin, příkaz se vykoná.

V čem může být problém?
Kajman
Profil
Jaká je přesně struktura tabulky?
show create table clen

Edit: jinak rozdíl mezi servery bude v nastavení dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_date
Firibix
Profil
Reakce na PavV:
Pravděpodobně má MySQL zapnutý strict mode, kde 0000-00-00 není platné datum, a sloupec clen_od má jako výchozí hodnotu právě samé nuly.

Striktní režim lze vypnout SQL příkazem SET sql_mode:

$pdo = new \PDO(...);
$pdo->query("SET sql_mode = '';");
PavV
Profil
Firibix:
Díky, to zabralo :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0