06. august 2010 - 21:35Der er
10 kommentarer og 1 løsning
Problemer med INSERT INTO til en MySql database...
Jeg er bestemt ikke programmør og måske derfor mit problem. Min webside har jeg netop flyttet til et andet hotel, og herefter virker mine php sider ikke mere, vedr. indsættelse af tilmeldingsoplysninger. Man taster i en HTML side og herefter tager en php side oplysningerne ind i databasen:
<?php include("sqllogin.php"); $dato=date("Y-n-j"); $sql="INSERT INTO tilmelding2010 (navn,email,deltager,overnatte,gaester,besked,Tlf,Antal,dato)VALUES ('$navn','$email','$deltager','$overnatte','$gaester','$besked','$Tlf','$Antal','$dato')"; $result = mysql_query($sql); mail("webmaster@cqcq.dk","Ny melding til julefrokost fra ".$navn,$deltager,"From: ".$email); ?> <html> <title>Opdater</title> <body bgcolor="#008080"> Tak for det, du har nu registreret dig. <p><a href="/index.html">Klik her for at komme tilbage.</a></p> </body> </html>
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Siger du at siden virker saaledes at den korrekt sender emailen ud med bekraeftelse af tilmelding men at tilmeldingsoplysningerne ikke bliver indsat i mysql tabellen "tilmelding2010"? I saa fald kunne du jo begynde med at lade mysql fortaelle hvilke problemer den ser, altsaa: $result = mysql_query($sql) or die(mysql_error());
Tak for kommentarer begge to. Desværre er der ingen af jeres svar der ændrer noget. Svarene er at data blev indsat og ingen problemer, men der er fortsat ingen data i databasen - dog er der en tom record med dato (det var der også før) - så PHPen har haft fat i databasen. Mit næste gæt må være at der er HTMLen der danner data, der er noget galt med. Eller at udbyder har en eller anden hindring for at undgå spam data. Men så burde jeres forslag jo have vist det. I er meget velkomne til at kommentere yderligere....
Lad mig lige checke at jeg forstaar dig korrekt. Siger du at naar du sender din mysql INSERT INTO tilmelding2010 query saa bliver der tilfoejet en ny record til tabellen tilmelding2010 hvor dato-feltet bliver korrekt indsat men felterne navn, email, deltager o.s.v. er tomme? Og bruger du 'or die(mysql_error() og giver det dig ingen fejlmelding?
Hvis det er korrekt saa har mit forslag (i al beskedenhed) hjulpet idet du har snaevret problemet ind. Det maa vaere variablerne $navn, $email, $deltager o.s.v. der er tomme! (Eller mig der er tosset.) Det kodeudsnit du gav viser ikke hvor vaerdierne i disse variabler kommer fra. Jeg ville foreslaa at du for testformaal indsaetter foelgende kode lige efter include ("sqllogin.php"):
echo "navn= " . $navn . ", email= " . $email . ", deltager= " . $deltager ..... og se hvad vaerdierne er. Hvis de, som jeg forventer, er tomme maa du gaa tilbage til den kode der skulle have givet vaerdier til variablerne (eventuelt vise den her.)
I forlængelse af hvad christian skriver så kunne jeg godt tænke mig at se hvordan du får fat i de data der skal sættes ind i databasen. Prøv evt. også at udskrive din SQL streng til skærmen.
Undskyld mig svartiden, men jeg har lidt travlt med andre gøremål lige nu. Jeg vender tilbage snarest med svar. Jeg har dog en klar overbevisning om at problemet ligger i forskellen på de PHP versioner der henholdsvis lå på den gamle server og den nye. GET formatet er ændret - det er det jeg roder med lige nu. Men jeg vender tilbage. Mht Echo - ja, det er klart måden at tjekke på - det brude jeg nok måske have skrevet at jeg gjorde. Mvh MYN
Du skriver: "Mht Echo - ja, det er klart måden at tjekke på - det brude jeg nok måske have skrevet at jeg gjorde." Betyder det at du har indsat echo statements i den kode du jaevnfoer ovenstaaende bruger til din mysql_query statement og at det viser at de variabler du bruger i din mysql_query har de forventede vaerdier, men skoent din mysql_query statement resulterer i at der laves en ny record i databasetabellen saa er felterne i den nye record tomme undtagen for dato og at samtidig du ikke faar nogen mysql_error besked? I saafald maa jeg nok give fortabt.
Men jeg ville mene at du er paa vildspor hvis du proever at lede efter problemer i forskellene paa php versionerne. Hvis den php version du nu bruger med de get formater der er gaeldende i den php version resulterer i at du for leveret de rigtige variabler til ovenstaaende kode, som bevist ved echo, saa kan problemet ikke skyldes php versionen.
Jeg tror vi bliver nødt til at se noget mere kode her.
Det jeg gerne vil se er den form hvor brugeren skriver data (og hvor du skal hente det fra) og så vil jeg ligeså gerne se hvordan du forsøger at fange.
Desuden skal du være helt sikker på om din form bruger get eller post som method idet du skal bruge dette til at fange dem i din PHP.
men som sagt, hjælpen er væsentlig lettere at give konkret hvis vi har noget mere kode at se på.
Hej alle. En PHP ven anviste mig at bruge $_request til variablerne og det hjalp. Altså må der have været en forskel i versionerne hos de to udbydere. Formen har jeg ialtfald ikke ændret på. Og at variablerne var tomme synes jeg var klart fra starten. Det der hjalp mig mest var Christian-Belgiens forslag om at sætte et SQL check på. Og da han også var først på tasterne, vælger jeg at tildele pointene til ham. (skal så lige finde ud af hvordan man gør det) - I andre skal nu også have tak fordi I forsøgte. Det er bestemt ikke sidste gang jeg er herinde. Og har da heldigvis også selv kunne bidrage lidt - bare på hardware siden. Mvh MYN
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.