17. februar 2019 - 18:47
Der er
11 kommentarer
Field 'aar' doesn't have a default value
Efter jeg har opdateret min PHP version til 7.2 på one.com, kommer denne fejl når jeg vil skrive til min DB Field 'XXX' doesn't have a default value Nogen der ved hvad set skyldes, og evt hvad jeg kan gøre ved det?
Annonceindlæg fra Trustworks
Få success med integrationer!
Behovet for dataudveksling stiger dramatisk. Artiklen belyser tre simple trin, som sikrer succes med udvikling og forvaltning af integrationer.
17. januar 2024
17. februar 2019 - 18:49
#1
Normalt betyder det at du kører en INSERT query, men du ikke sætter alle de kolonner ind der kræver en værdi. Det lyder dog meget underligt at det skulle ske efter en opdatering, så vi må nok se noget kode.
17. februar 2019 - 20:05
#2
Her erden kode jeg bruger til skrive poster i DB <?php include "connect.php"; if(isset($_GET['button'])); $anavn = $_POST['anavn']; $dag = $_POST['dag']; $adag = $_POST['adag']; $afra = $_POST['afra']; $atil = $_POST['atil']; $maa = $_POST['maa']; $aar = $_POST['aar']; $atildelt = $_POST['atildelt']; $dato = mktime(0,0,0,$maa,$dag,$aar); $asted = $_POST['asted']; $abesk = $_POST['abesk']; $pladser = $_POST['pladser']; if($anavn!=''&&$asted!=''&&$abesk!=''&&$pladser!='') include "connect.php"; mysql_query("INSERT INTO xxxx (anavn, adag, afra, atil, asted, atildelt, dato, abesk, pladser, tilmeldt) VALUES('$anavn', '$adag' ,'$afra', '$atil', '$asted', '$atildelt', '$dato', '$abesk', '$pladser', '0' ) ") or die(mysql_error()); echo "<br><br><br><br>"; echo "<center>"; echo 'Vagten er nu oprettet!'; echo '<meta http-equiv="refresh" content="1;url=http:add_arr.php">'; ?> <body> </body> </html> <?php
17. februar 2019 - 20:11
#3
Ja, problemet er åbenlyst - og der er dusinvis af andre spørgsmål om det samme, bare her på denne side. Du bruger mysql_* funktionerne. De eksisterer ikke længere i PHP 7. Du er nødt til at opgradere koden til at bruge mysqli eller PDO i stedet. Men hvorfor det giver dén fejl i stedet for "funktionen findes ikke" som den burde, det ved jeg ikke. - Rent bortset fra det, så er det en meget farlig kode der er pivåben for SQL injections. Det bør du nok kigge på i samme omgang.
17. februar 2019 - 20:25
#4
Ja. Mne derudover saa er der 12 variable men kun 10 felter i baade field list og value list. Saa hvis der er 12 felter i databasem, saa giver fejlen vel mening.
17. februar 2019 - 20:27
#5
Maaske inkluderer connect.php det der grimme hack som definerer mysql funktionder der kalder mysqli, som der er postet link til nogle gange her.
Synes godt om
1 synes godt om dette
17. februar 2019 - 20:59
#6
Ja, det ville forklare lidt, men så er der pludselig spørgsmålet om hvorfor det skulle være opstået efter en opdatering igen. Vi skal nok vide lidt mere, hvis ikke opretter kan rette problemet ud fra dette.
17. februar 2019 - 23:24
#7
Jeg bruger dette i min connect.php <?php include_once('mysql2i.class.php'); include_once('mysql2i.func.php'); Det virker også fint så længe jeg kun læser fra db, min ikke hvis jeg skal skive
18. februar 2019 - 08:05
#8
Ja, så gættede Arne ret. Det er ikke en optimal løsning, men det burde virke. Arne har til gengæld også ret i, at du henter 12 variable men kun forsøger at indsætte 10 af dem i databasen. Og en af dem du ikke sætter ind er $aar, som også er den fejlen klager over. Det er ikke til at sige 100% uden at se din databasestruktur, men det tyder meget på at du simpelthen har glemt at give to kolonner værdi i din INSERT query, præcis som fejlen også siger. Men igen, hvorfor den fejl ikke er kommet før, det er underligt.
18. februar 2019 - 08:34
#9
>$aar = $_POST['aar']; >$atildelt = $_POST['atildelt']; >$dato = mktime(0,0,0,$maa,$dag,$aar); får din $aar fra $_POST['aar']; ?? har du lavet nogle ændringer i din HTML ?? får du alle dine værdier i $_POST >if($anavn!=''&&$asted!=''&&$abesk!=''&&$pladser!='') include "connect.php"; hvad er meningen med dette ?? du har jo includeret connect.php allerede !!
18. februar 2019 - 22:30
#10
Tak for de gode råd men det er desværre uden vikning, jeg forsøgt at skrive min kode om så den nu ser sådan ud, jeg har nu ingen fejl meldinger, jeg har tjekket om der er værdi på variablerne, det er der, men der kommer ingen data i databasen, det fatter jeg bare ikke <?php include "connect.php"; if(isset($_GET['button'])); $anavn = $_POST['anavn']; $dag = $_POST['dag']; $adag = $_POST['adag']; $afra = $_POST['afra']; $atil = $_POST['atil']; $maa = $_POST['maa']; $aar = $_POST['aar']; $atildelt = $_POST['atildelt']; $dato = mktime(0,0,0,$maa,$dag,$aar); $asted = $_POST['asted']; $abesk = $_POST['abesk']; $pladser = $_POST['pladser']; $sql = "INSERT INTO db_xxxx(anavn,asted,dato,adag,afra,atil,abesk,tilmeldt,pladser,atildelt,aar)VALUES ('".$_POST["anavn"]."','".$_POST["asted"]."','".$_POST["dato"]."','".$_POST["adag"]."','".$_POST["afra"]."','".$_POST["atil"]."','".$_POST["abesk"]."','".$_POST["tilmeldt"]."','".$_POST["pladser"]."','".$_POST["atildelt"]."','".$_POST["aar"]."')"; echo "<br><br><br><br>"; echo "<center>"; echo "<br>"; echo "$anavn"; echo "<br>"; echo "$asted"; echo "<br>"; echo "$dato"; echo "<br>"; echo "$adag"; echo "<br>"; echo "$afra"; echo "<br>"; echo "$atil"; echo "<br>"; echo "$abesk"; echo "<br>"; echo "$tilmeldt"; echo "<br>"; echo "$pladser"; echo "<br>"; echo "$atildelt"; echo "<br>"; echo "$aar"; echo "<br>"; echo 'Vagten er nu oprettet!'; echo '<meta http-equiv="refresh" content="10;url=http:add_arr.php">'; ?>
18. februar 2019 - 22:45
#11
Det ser ikke ud til at du nogensinde udfører din SQL sætning nu, du sætter den bare i en variabel og glemmer den igen.