Autor | Zpráva | ||
---|---|---|---|
PavV Profil |
#1 · Zasláno: 30. 7. 2024, 13:49:44
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.. 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>"; $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 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 |
#3 · Zasláno: 30. 7. 2024, 14:43:47
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 = new \PDO(...);
$pdo->query("SET sql_mode = '';"); |
||
PavV Profil |
#4 · Zasláno: 30. 7. 2024, 17:03:56
Firibix:
Díky, to zabralo :-) |
||
Časová prodleva: 8 měsíců
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0