Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiungi 1 a un campo

Vengo declassato per questo?

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

Nel caso specifico di Teifion, il phpBB DDL elenca quel particolare campo come NOT NULL, quindi non c'è pericolo di incrementare NULL.

Nel caso generale, non dovresti usare NULL per rappresentare zero. L'incremento di NULL dovrebbe dare una risposta di NULL. Se sei il tipo di sviluppatore fuorviato che pensa NULL=0, allontanati dalla tastiera e trova un altro passatempo, stai solo rendendo la vita difficile per il resto di noi. Naturalmente, questa è l'industria dei computer e chi siamo noi per dire che ti sbagli? Se non ti sbagli, usa

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

...ma ammettiamolo:ti sbagli. Se tutti iniziano dal livello 0, il tuo DDL dovrebbe includere

level INT DEFAULT '0' NOT NULL

nel caso in cui i programmatori dimentichino di impostarlo quando creano un record. Se non tutti iniziano dal livello 0, salta il DEFAULT e forza il programmatore a fornire un valore alla creazione. Se alcune persone sono al di là dei livelli, per le quali avere un livello è una cosa priva di significato, allora aggiungerne uno al loro livello allo stesso modo non ha significato. In tal caso, elimina NOT NULL dal DDL.