14. november 2010 - 14:06
Der er
9 kommentarer
Indsæt variabel i mysql database
Hej Eksperter, Er det muligt, at indsætte en variabel der dynamisk bliver genereret på en php side, i en mysql database, og i så fald hvordan? Jeg har en mysql indsert der ser ud som følger: if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "newad")) { $insertSQL = sprintf("INSERT INTO mistet (brugerid, overskrift, tekst, billed1, kategori, aktiv, ip, fm) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST['brugerid'], "text"), GetSQLValueString($_POST['overskrift'], "text"), GetSQLValueString($_POST['tekst'], "text"), GetSQLValueString(date("dmyHis").(".".$extension)), GetSQLValueString($_POST['kategori'], "text"), GetSQLValueString($_POST['aktiv'], "text"), GetSQLValueString($_POST['ip'], "text"), GetSQLValueString($_POST['fm'], "int")); Variablen $extension bliver defineret længere nede på siden via en function der læser fil typen, og den del virker korrekt. Når der bliver indsat værdier i databasen, er det kun den første del (date("dmyHis") af GetSQLValueString(date("dmyHis").(".".$extension)), der bliver indsat i databasen mens (".".$extension) ikke bliver indsat i databasen. Hvordan får jeg dette til at virke?
Annonceindlæg fra Hitachi
”Forskellighed gør os stærkere!”
Diversitet er ikke kun buzzwords og politisk korrekthed, men et spørgsmål om at alle føler sig godt tilpas og kan yde deres bedste.
31. januar 2025
14. november 2010 - 15:22
#1
Kan du lave lidt echo output for at debugge?
F.eks.:
echo "<div style='border:2px solid red'><p>date: " . date("dmyHis") . "</p><p>extention: $extension</p><p>SQL: $insertSQL </p></div>";
så du kan se om GetSQLValueString() kan behandle værdier med punktum som du forventer
14. november 2010 - 15:55
#2
Det får jeg følgende ud af date: 141110143738 extention: jpg SQL: INSERT INTO mistet (brugerid, overskrift, tekst, billed1, kategori, aktiv, ip, fm) VALUES ('1', 'Test', 'Test', 141110143737., '5', '1', '87.72.27.101', 0) Så både filnavn/date og extension er korrekt, og det ser ud til, at der er et punktum i VALUES 141110143737. men i databasen står der 141110143737 billed1 er sat til varchar(255), så det skulle ikke være der problemet er.
14. november 2010 - 15:56
#3
Iflg PHP skal funktionen GetSQLValueString have op til 4 argumenter. De to første er krævet. Men du sætter jo kun et argument (mangler text/date) i GetSQLValueString(date("dmyHis").(".".$extension)) Så måske du skulle putte arg #2 på plads ;o)
14. november 2010 - 16:50
#4
Jeg har prøvet at ændre til GetSQLValueString(date("dmyHis").(".".$extension), "text"), og nu skriver den punktummet med i databasen. Jeg får dog stadig ikke filtypens beskrivelse med fx. jpg fra $extension. Er der nogle forslag til hvad der mangler/skal gøres anderledes?
14. november 2010 - 19:35
#5
Der er ikke apostroffer omkring filnavnet i #2: date returnerer altså noget numerisk. Får du apostroffer på #4 forsøget? Ellers prøv en tom string foran: GetSQLValueString("".date("dmyHis").(".".$extension), "text"),
14. november 2010 - 19:38
#6
Og drop den unødvendige parentes: GetSQLValueString("".date("dmyHis").".".$extension, "text"),
14. november 2010 - 22:43
#7
Hej tjens, Jeg har prøvet, at ændre til det du skriver, men jeg får stadig ikke filtypen med i databasen. Resultatet i databasen ser ud som følger: 141110211900. Når jeg laver en echo på outputtet får jeg følgende: date: 141110213454 extention: jpg SQL: INSERT INTO mistet (brugerid, overskrift, tekst, billed1, kategori, aktiv, ip, fm) VALUES ('1', 'asa asd asd asdaf yijufil', 'ngds', '141110213453.', '5', '1', '87.72.27.101', 0)
15. november 2010 - 11:22
#8
INSERT INTO `titles` (`id`, `title`, `URL`) VALUES (now(), '" . $targetNodes->item(0)->nodeValue . "', '" . $rssFeedName . "')");
Det er ikke din løsning, men læg mærke til de mærkelige apostroffer.
Her en en en anden der har mystiske fejl:
http://news.php.net/php.general/308414 Og der er al for megen streng gymnastik i de funktioner( wrappers), så jeg ville gå tilbage til NATIVE SYNTAX som du ser øverst.
Her ser du et af mine eksempler, der både har node reference og $variabel, samt function i spil ;0)
Håber det hjælper, for jeg kan ikke se din nuværende trunkeringsfejl ...
15. november 2010 - 20:13
#9
Du må debugge videre: Lav et nyt felt: $dateExt = "".date("dmyHis").".".$extension; Og tilføj feltet i debug echo og brug det i $insertSQL = sprintf(... i stedet for det originale.
Vi tilbyder markedets bedste kurser inden for webudvikling