Autor Zpráva
Majkelju
Profil
Ahoj, mám takový začátečnický dotaz. Jak správně psát uvozovky při vkládání NULL hodnoty v INSERTu. Zkusil jsem různé možnosti a pořád mi to vkládá nulu místo NULL....momentálně můj dotaz vypadá takhle, takhle mi to aspoň vybarví zvýrazňovač syntaxe. NULL mám na konci:
$result5 = $db->query("
            INSERT INTO skupiny (`id`, `znacka`, `nazev`, `k_zatrideni`,`k_mj`, `mnozstvi`, `podil`, `par0`, `par1`,
                                `typ`, `varianta`, `k_predch`) 
            VALUES ('".$newId."', '".$_POST['znacka']."', '".$_POST['nazev']."', '".$idZatrideni."', '".$_POST['mj']."',
                    '".$_POST['mnozstvi']."', '".$_POST['podil']."', '0', '0', '1', '0', '"NULL"')
        ");    
mimochodec
Profil
... '1', '0', NULL)

Kromě toho: zvaž možnost nastavit si v databázi pro ten sloupec NULL jako výchozí, pak to z toho dotazu můžeš vynechat. Obdobně ty sloupce typ, varianta, atd. Pokud ale máš důvod tu variantu a další číselné položky vkládat, nedávej je do dotazu jako text = s apostrofy, ale bez nich.
No a to nejdůležitější: hodnotu ID nezadávej. Nastav tomu sloupci auto_increment a to, že jde o primární klíč. Vygenerování ID zajistí databáze sama.
Majkelju
Profil
mimochodec: Když to napíšu bez uvozovek, tak mi to vůbec neuloží ten celý záznam... :/
mimochodec
Profil
Majkelju:
Jakého typu je ten sloupec?
Majkelju
Profil
mimochodec:
je to int. A ještě k tomu id, tam by měl auto_increment už být nastaven...ale do dotazu mám napsat jen '' ?
mimochodec
Profil
Majkelju:
je to int.

Nejsem si jist, ale nezdá se mi, že by do int bylo možné zadat NULL.

A ještě k tomu id, tam by měl auto_increment už být nastaven...ale do dotazu mám napsat jen '' ?
Ne, prostě to úplně vynech. Nepiš tam ani `id`, ani '".$newId."' ani nic místo něj.
Majkelju
Profil
mimochodec:
tzn. vynechat ho jak za INTO, tak i ve VALUES...ok... No právě ty dotazy dělám do už hotové db, a tam NULL u některých záznamů už v tomto sloupci jsou...
Alphard
Profil
Tady někdo přeskočil základy práce s MySQL :-)
Hodnoty pro sloupec auto increment a sloupce se zadanou defaultní hotnotou nebo povoleným vkládáním null není třeba v insertu uvádět.
Pokud se uvádí, tak prostě null bez uvození.
I int sloupec může obsahovat hodnotu null, je-li povolena. Jestli je povolena ví tvůrce tabulky.
Kajman
Profil
Majkelju:

Vypište si přesně sestavený dotaz a chybu z databáze.

Sloupec nesmí být označen jako not null - pak null hodnoty vkládat nejdou.
Joker
Profil
mimochodec:
Nejsem si jist, ale nezdá se mi, že by do int bylo možné zadat NULL.
NULL jde vložit do jakéhokoliv sloupce, který není NOT NULL.
Uvozovky se píší jen kolem řetězců, takže "NULL" je řetězec, hodnota NULL se píše bez uvozovek.

Jinak viz předchozí příspěvky.
mimochodec
Profil
Joker:
NULL jde vložit do jakéhokoliv sloupce, který není NOT NULL.
dík, nevěděl jsem.

Uvozovky se píší jen kolem řetězců, takže "NULL" je řetězec, hodnota NULL se píše bez uvozovek.
věděl jsem :-)
Majkelju
Profil
Alphard:
Ne úplně přeskočil, spíš je nedostatečně projel a něco pozapomněl, teď se do toho teprv pořádně dostávám :)

Jinak to vynechání pomohlo, díky moc! ;)

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: