06. januar 2021 - 17:17Der er
3 kommentarer og 1 løsning
Standardværdi i DB-felter
Når man indsætter data i en database er det nødvendigt at definere alle felterne i transaktionen. if (isset($_POST['submit'])) { $nam = $_POST['name']; $mail = $_POST['email']; if (!isset($_POST['phone'])){ $tlf = ''; } $sql = mysqli_prepare($link,"INSERT INTO users(name, email, phone) VALUES (?,?,?)") or die(mysqli_error($link)); $sql->bind_param("ssi", $nam,$mail, $tlf);
Det vil være fristende at oprette en standardvædi for felterne i databasen, så definisionen af de felter, der ikke bliver anvendt i den pågældende transaktion, kan undværes. Kan det tilrådes? - og hvis nej hvorfor ikke.
Det er jo et spørgsmål hvor der ikke er et klart facit.
Men jeg kan prøve og komme med et par betragtninger.
Det er ofte relevant med default values for ihvertfald nogen felter.
Omend jeg vil tro at NULL er noget hyppigere brugt end default values.
Husk at der er forskel på NULL og 0/'' (med 1 2 0 er COUNT 3 og AVG 1, mens med 1 2 NULL er COUNT 2 og ACG er 1.5).
Så man skal tænke grundigt over om man ønsker NULL eller 0/'' eller reel default value som f.eks. 'Standard'.
Default values kan enten være i databasen eller i applikationen.
Hvis ens database bruges af forskellige applikationer - og måske er disse applikationer endda i forskellige programmerings sprog - så er der fordele ved at have default værdier i databasen, da alle applikationer så deler disse.
Men hvis der kun er en applikation som bruger databasen, så er der en praktisk fordel ved at have de default values i applikationen - koden bliver simplere.
Det giver mindre kompleksitet i koden, hvis du benytter dig af standardværdier, da det giver mindre kode, da du ikke skal kontrollere om data'en er til rådighed.
Derudover bliver det også mere skalerbart, for hvis du tilføjer et felt senere hen, da du så ikke skal du så vedligeholde alle steder du indsætter data.
Du skal selvfølgelig tænke over hvad din standardværdi skal være, som Arne har skrevet. Jeg vil anbefale at bruge NULL, da du så programmerisk kan styre hvad den værdi er, men det kommer meget an på hvert scenarie.
Jeg har et felt i databasen som ikke bliver brugt mere. Der var oprindelig henvisning til en mappe med billeder. I de ældste poster er der stadigvæk data, men jeg har nu sat den til default 0. (burde måske være NULL)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.