меня за это унизили?
$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
В конкретном случае Teifion DDL phpBB перечисляет это конкретное поле как NOT NULL, поэтому нет опасности увеличения значения NULL.
В общем случае вы не должны использовать NULL для представления нуля. Увеличение NULL должно дать ответ NULL. Если вы из тех заблудших разработчиков, которые думают, что NULL = 0, отойдите от клавиатуры и найдите другое времяпрепровождение, вы просто усложняете жизнь остальным. Конечно, это компьютерная индустрия, и кто мы такие, чтобы говорить, что ты не прав? Если вы не ошиблись, используйте
$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";
... но давайте посмотрим правде в глаза: вы не правы. Если все начинают с уровня 0, тогда ваш DDL должен включать
level INT DEFAULT '0' NOT NULL
на случай, если программисты забудут установить его при создании записи. Если не все начинают с уровня 0, пропустите DEFAULT и заставьте программиста указать значение при создании. Если некоторые люди находятся за пределами уровней, для которых наличие уровня является бессмысленной вещью, то добавление одного уровня к своему уровню в равной степени не имеет смысла. В этом случае удалите NOT NULL из DDL.