sql >> Databasteknik >  >> RDS >> Mysql

Lägg till 1 i ett fält

Jag blir nedstämd för detta?

$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);

I Teifions specifika fall listar phpBB DDL just det fältet som NOT NULL, så det finns ingen risk att öka NULL.

I det allmänna fallet bör du inte använda NULL för att representera noll. Öka NULL bör ge svaret NULL. Om du är den sortens missriktade utvecklare som tror NULL=0, ta dig bort från tangentbordet och hitta ett annat tidsfördriv, du gör bara livet svårt för oss andra. Naturligtvis är detta datorindustrin och vem är vi att säga att du har fel? Om du inte har fel, använd

$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";

...men låt oss inse det:du har fel. Om alla börjar på nivå 0, bör din DDL inkludera

level INT DEFAULT '0' NOT NULL

ifall programmerarna glömmer att ställa in det när de skapar en post. Om inte alla börjar på nivå 0, hoppa över STANDARD och tvinga programmeraren att ange ett värde vid skapandet. Om vissa människor är bortom nivåerna, för vilka det är meningslöst att ha en nivå, så har det inte heller någon mening att lägga till en till deras nivå. Släpp i så fall NOT NULL från DDL.



  1. hur förhindrar man sql-injektion från denna fråga?

  2. Är InnoDB-sortering verkligen SÅ långsam?

  3. PHP- infoga binär data i mysql med hjälp av förberedda satser

  4. SQL Unik begränsning över flera tabeller