Dostanu za to downmoded?
$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
V Teifionově specifickém případě phpBB DDL uvádí toto konkrétní pole jako NOT NULL, takže nehrozí zvýšení hodnoty NULL.
V obecném případě byste neměli používat NULL k reprezentaci nuly. Zvýšení hodnoty NULL by mělo dát odpověď NULL. Pokud jste ten typ pomýleného vývojáře, který si myslí, že NULL=0, ustupte od klávesnice a najděte si jinou zábavu, jen ztěžujete život nám ostatním. Samozřejmě, toto je počítačový průmysl a kdo jsme, abychom řekli, že se mýlíte? Pokud se nemýlíte, použijte
$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";
...ale přiznejme si to:mýlíte se. Pokud všichni začínají na úrovni 0, pak by vaše DDL měla zahrnovat
level INT DEFAULT '0' NOT NULL
pro případ, že jej programátoři zapomenou nastavit při vytváření záznamu. Pokud nezačínají všichni na úrovni 0, pak přeskočte DEFAULT a donuťte programátora, aby dodal hodnotu při vytváření. Pokud jsou někteří lidé za úrovněmi, pro které je mít úroveň bezvýznamnou věcí, pak přidávat jednu k jejich úrovni stejně nemá žádný význam. V takovém případě vynechejte NOT NULL z DDL.