fancy Juniormester
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?
Slater Ekspert
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.
fancy Juniormester
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
Slater Ekspert
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.
arne_v Ekspert
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.
arne_v Ekspert
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.
Slater Ekspert
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.
fancy Juniormester
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
Slater Ekspert
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.
olsensweb.dk Ekspert
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 !!
fancy Juniormester
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">';
?>
Slater Ekspert
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.
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 23:04 Android Af ZeBa i Mobiltelefoner
I går 20:58 pdf filer Af evo i Andet software
I går 20:10 AutoKeys med undermacro Af per2edb i Access
I går 18:52 BSOD: system thread exception not handled Af Sten-hader-BSOD i Windows
I går 18:43 PowerBi Af micaud i Excel


Premium
En ny udbudslov kan se dagens lys i 2020: Få overblikket her
Evalueringen af den nuværende udbudslov blev sat i gang, da erhvervsminister Rasmus Jarlov udsendte et høringsbrev i demcember 2018. Lovforslaget og eventuelle ændringer forventes at ligge klar i 2020.
Computerworld
Yousee, Telmore og TDC Erhverv bliver nu en del af et helt nyt underholdningsselskab
TDC Group bliver i fremtiden splittet op i to selskaber, og det ene selskab, der kommer til at fokusere på digital underholdning har netop fået sit navn.
CIO
Tech fra Toppen: Det har CIO Mads Madsbjerg Hansen fra FLSmidth lært af flere års global it-konsolidering
Tech fra Toppen: Flere års arbejde har betydet en reduktion i antallet af it-systemer hos FLSmidth. Men processen har ikke været uden overraskelser. Hør hvad CIO Mads Madsbjerg Hansen har lært af den omfattende og globale proces.
Job & Karriere
Efter blodrødt regnskab: Nu fyrer Atea 20 medarbejdere i Danmark
Atea fyrer nu 20 medarbejdere. Det sker som en direkte konsekvens af, at den danske forretning er under pres, oplyser selskabets direktør.
White paper
Dine Office 365 data er ikke sikre i skyen!
Hvis din virksomhed er blandt det hastigt voksende felt af virksomheder, som har migreret til Office 365, så kender du allerede til de mange fordele, der er ved Microsofts cloud-baserede suite. Men er du også klar over din organisations ansvar for at kontrollere og styre dine Office 365 data? Du tror måske, at der er back-up på dine gemte Office 365 data i skyen, men dette er desværre en forkert perception. Hvad hvis en medarbejder ved en fejl sletter en vigtig mail eller en vital rapport? Eller hvad hvis en utilfreds medarbejder gør det med vilje? Det er ikke kun denne slags fejl eller onde handlinger, du skal bekymre dig om, for de begrænsede sikkerhedspunkter der er bygget ind i Office 365 gør, at I er meget sårbare. I dette white paper bliver du klogere på, hvordan I kan sikre jer og undgå at ovenstående scenarie udfolder sig.