14. marts 2005 - 21:37Der er
15 kommentarer og 1 løsning
Fejl i SQL syntax
"You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1" Denne fejlmeddelelse får jeg hver gang jeg prøver at poste til min sql server.
Min upload kode ser således ud:
if ($_POST['referer'] == 'edit_tilbud') { mysql_query("UPDATE martilbud SET navn='".$_POST['navn']."', land='".$_POST['land']."', region='".$_POST['region']."', drue='".$_POST['drue']."', indhold='".$_POST['indhold']."', storrelse='".$_POST['storrelse']."', alkohol='".$_POST['alkohol']."', npris='".$_POST['npris']."', tpris='".$_POST['tpris']."', udato='".$_POST['udato']."', typen='".$_POST['typen']."', text='".$_POST['text']."' WHERE id=".$_POST['id']."") or die(mysql_error()); header("Location: admin.php?offset=".$_POST['offset']); }
Det er meningen den skal uploade oven på det der står i forvejen... Man kan godt poste almindeligt med koden SET...
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
detox -> Nej enig, men det vi jo ikke om det er, men hvis det er så skal den jo slutte på WHERE id=".$_POST['id']) or die(mysql_error()); og altså ikke escape php efter $_POST['id'], og jeg skulle mene at uanset hvad så er det slutningen ."") som giver fejlen. /Conundrum
Jeg er helt enig med detox, en god fremgangs måde ville være således: if ($_POST['referer'] == 'edit_tilbud') { $sql = "UPDATE martilbud SET navn='".$_POST['navn']."', land='".$_POST['land']."', region='".$_POST['region']."', drue='".$_POST['drue']."', indhold='".$_POST['indhold']."', storrelse='".$_POST['storrelse']."', alkohol='".$_POST['alkohol']."', npris='".$_POST['npris']."', tpris='".$_POST['tpris']."', udato='".$_POST['udato']."', typen='".$_POST['typen']."', text='".$_POST['text']."' WHERE id='".$_POST['id']."'"; mysql_query($sql) or die($sql." <br />".mysql_error()); header("Location: admin.php?offset=".$_POST['offset']); }
På denne måde kan du se din query, og dermed meget nemt se fejlen, et andet lille fif jeg lige ville nævne er at det ikke er for smart at bruge $_POST værdierne direkte i en query, men istedet validere input inden man får ondhed i sin DB. /Conundrum
Tak, for svaren, er i skole lige nu, men tester det i aften når jeg kommer hjem... conundrum -> Hvad mener du med "det ikke er for smart at bruge $_POST værdierne direkte i en query, men istedet validere input inden man får ondhed i sin DB" - Hvad er det du mener jeg skal skrive i stedet?
Det vigtigste er sådan set at de sikrer dig at der kommer escape på bl.a. apostroffer. Det laver php automatisk, hvis magic_quotes_gpc er sat til, men du bør sikre dig at det er tilfældet. Til formålet kan du bruge: get_magic_quotes_gpc(): http://dk2.php.net/manual/en/function.get-magic-quotes-gpc.php
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.