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 HP
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