24. juni 2003 - 17:52Der er
10 kommentarer og 1 løsning
$_POST[foo] og $_POST['foo']
Jeg har læst mig frem til at man helst skal bruge den sidste af de to metoder i spørgsmålets titel (og jeg kan ved død og pine ikke huske hvor det var jeg fandt det). Da man ellers kan komme til at bruge nogle reserverede variabler.
Men jeg syntes ikke at jeg få til til at virke i en sql sætning. Ex. $stmt="INSERT INTO tabel (foo) VALUES ('$_POST['foo']')". Bruger jeg der imod den første variant så er der ikke nogen problemer i at indsætte data.
Enten er jeg ved at være træt eller også kan jeg ikke lige helt se hvordan jeg escaper $_POST['foo'] korrekt
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Problemet kommer sig af at php syntaks på mange måder er noget rod. $_POST['foo'] eller $_POST["foo"] er det strengt korrekte de 3 bogstaver 'f', 'o' og 'o' danner tilsammen een streng der er indexværdien for den array-celle vil vil have fat i.
i: $stmt="INSERT INTO tabel (foo) VALUES ('$_POST['foo']')"; prøver du at bruge en 'smart' udvidelse een eller anden idiot har lavet til php, at man kan indskrive en variabel direkte ind i en streng der hvor man vil have variabelens værdi til at stå. uden den udvidelse skulle der stå: $stmt="INSERT INTO tabel (foo) VALUES ('" .$_POST['foo'] ."')";
og det er da vitterligt lidt nemmere at slippe for at skrive de ekstra punktummer, men det vil jeg anbefale at du gør.
For den udvidelse virker altså ikke med et arrayopslag hvor der er anførselstegn rundt om indexværdien (jeg kender ikke nogen god grud til at det skulle gøre det sværere). Og uden de anførselstegn har vi så igen den situation hvor strengværdien 'foo' kan blive forvekslet med konstanten foo.
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.