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





Premium
Mens Kevin Magnussen kører Formel 1-ræs, kæmper international top-CIO i kulissen for at beskytte vitale data
Det vigtigste for CIO hos Haas F1 er it-sikkerhed. Her fortæller han til amerikansk medie, hvordan han griber den opgave an med sikkerhedslag og en ny platform, der overvåger racerholdets globale netværk.
Computerworld
Google blokerer med omgående virkning for Huaweis brug af Android-licenser - se hvad det kommer til at betyde for dig
Google begrænser med omgående virkning kinesiske Huaweis brug af Android. Huawei vil ikke længere have adgang til tjenester fra Google.
CIO
Danske Joachim Ærtebjerg er med i toppen som CTO for Intel i EMEA - hør hans bud på it-udviklingen efter 25 år hos processor-giganten
Tech fra Toppen: Danske Joachim Ærtebjerg har arbejdet for Intel siden de lancerede Pentium-processoren i midten af 90´erne. I dag er han CTO for EMEA-området - og giver her sit bud på it-udviklingen.
Job & Karriere
"Vi var fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Det kalder jeg mit første start-up. Det blev til IT-Universitetet. "
"Da jeg var færdig med PhD´en så var vi fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Så skulle vi bare have et nyt universitet op og køre på seks måneder. Det kalder jeg mit første start-up. Det blev til IT-Universitetet."
White paper
It-sikkerheden afhænger af dig!
Du kender det sikkert. En kollega vil dele en fil med navne, mailadresser og andre personlige data fra jeres Salesforce database, med en partner i EU. Vedkommende beslutter at smide en Excel-fil i DropBox og sender et link til partneren til download. En anden kollega skal bruge en kundes bankoplysninger for at kunne lave en overførsel, så kunden sender selvfølgelig en e-mail med alle bankoplysninger. Ovenstående er blot to eksempler på det, der sker flere gange dagligt. Nemlig tilfælde hvor der skal deles følsomme oplysninger, hvor der er meget dårlig datasikkerhed. Det er en konstant stressfaktor for de sikkerhedsansvarlige i it. Derfor er det en absolut nødvendighed, at have de rigtige værktøjer og teknologier, for at gøre samarbejdet med andre virksomheder, så smertefrit som muligt. Det kan du læse mere om, hvordan du opnår i dette white paper.