Tôi bị hạ cấp vì điều này?
$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
Trong trường hợp cụ thể của Teifion, phpBB DDL liệt kê trường cụ thể đó là NOT NULL, do đó, không có nguy cơ tăng NULL.
Trong trường hợp chung, bạn không nên sử dụng NULL để biểu thị số không. Tăng NULL nên đưa ra một câu trả lời của NULL. Nếu bạn là kiểu nhà phát triển sai lầm nghĩ rằng NULL =0, hãy rời khỏi bàn phím và tìm một trò tiêu khiển khác, bạn chỉ đang làm khó phần còn lại của chúng ta. Tất nhiên, đây là ngành công nghiệp máy tính và chúng tôi là ai để nói rằng bạn sai? Nếu bạn không nhầm, hãy sử dụng
$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";
... nhưng hãy đối mặt với nó:bạn đã sai. Nếu mọi người bắt đầu từ cấp 0, thì DDL của bạn nên bao gồm
level INT DEFAULT '0' NOT NULL
trong trường hợp các lập trình viên quên thiết lập nó khi họ tạo một bản ghi. Nếu không phải tất cả mọi người đều bắt đầu ở cấp độ 0, thì hãy bỏ qua ĐỊNH NGHĨA và buộc người lập trình cung cấp một giá trị khi tạo. Nếu một số người vượt quá cấp độ, đối với những người có cấp độ là một điều vô nghĩa, thì việc thêm một người vào cùng cấp độ của họ cũng không có ý nghĩa gì. Trong trường hợp đó, hãy loại bỏ NOT NULL khỏi DDL.