Autor Zpráva
Janik
Profil *
Ahoj, čím může být způsobeno to, že pokud vkládám do mysql db data, tak se mi do sloupce, kde je datový formát time a je zde zaplý NULL jako výchozí hodnota vloží místo null 00:00:00 (zkouším vkládat např neexistující proměnou nebo ="") Díky
joe
Profil
zkouším vkládat např neexistující proměnou nebo =""
Nastav výchozí hodnotu sloupce na NULL a do dotazu takový sloupec vůbec nedávej...
Hugo
Profil
Nebo tam vlož přímo NULL.

INSERT INTO `table` ( `null_field` )
VALUES (NULL)
Joker
Profil
Janik
se mi do sloupce, kde je datový formát time a je zde zaplý NULL jako výchozí hodnota vloží místo null 00:00:00
Protože jako výchozí hodnota se vkládá to, co je nastavené jako výchozí hodnota.
Že je pro sloupec povolený NULL ještě neznamená, že NULL bude výchozí hodnota.
Kajman_
Profil *
Joker
Spíš bude problém v tom, že pro mysql není prázdný řetězec '' a null to samé.

select ''<=>null


Takže i když bude defaultně null hodnota a zadá se jako vstup prázdný řetězec, můžou tam naskákat nuly.
Janik
Profil *
Protože jako výchozí hodnota se vkládá to, co je nastavené jako výchozí hodnota.


výchozí je právě NULL
Janik
Profil *
Můj mysql příkaz vypadá takto: (jde mi o sloupec "time")

mysql_query("INSERT INTO $tb values  ('$casvlozeni', '$datum', '$time', '$nazev', '$popis')", $spojeni);


přičemž $time = NULL; v odpovídajícím sloupci je povolena NULL a výchozí hodnota je NULL
Janik
Profil *
A pořád se mi tam "neukládá" NULL ale 00:00:00
potřebuji používat všechny "časy" i půlnoc a nemohu to tedy při selectu obejít tím

if ($zaznam["2"]=="00:00:00" or $zaznam["2"]==NULL){$hodiny="";} else {$hodiny="v ".date('G:i',strtotime($zaznam["2"]))." hodin";}
Janik
Profil *
do dotazu takový sloupec vůbec nedávej...


nj, ale $time má hodnotu "null" jenom někdy
nightfish
Profil
Můj mysql příkaz vypadá takto: (jde mi o sloupec "time")

mysql_query("INSERT INTO $tb values ('$casvlozeni', '$datum', '$time', '$nazev', '$popis')", $spojeni);


zápis '$time' znamená, že když $time bude NULL, tak se do databáze vloží 'NULL', tedy řetězec - a protože řetězec NULL není platnou hodnotou typu time, uloží se 00:00:00

je potřeba kontrolovat, jestli v $time je NULL a v případě, že ano, tak tam nedávat ty apostrofy
Janik
Profil *
nightfish
Velice děkuji.
Níže uvádám kompletní kód, který zajišťuje ukládání daných informací do databáze. Snad to třeba někdy někomu pomůže. Prosím o uzavření tohoto fóra.

if ($hodina == "nezadano") {$nezadano="NULL";
$success="<p><B>Informace byla úspěšně přidána do databáze.</B></p>";
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb values  ('$casvlozeni', '$datum', $nezadano, '$nazev', '$popis')", $spojeni);
echo ($success);
}
else
{
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb values  ('$casvlozeni', '$datum', '$time', '$nazev', '$popis')", $spojeni);
echo ($success);

}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0