Gå til innhold

Anbefalte innlegg

Er det noen som kan se hvorfor denne koden ikke virker?

mysql_query("INSERT INTO news (`time`, `title`, `author`, `text`) VALUES (`$time`, `$_POST[title]`, `$_POST[auth]`, `$_POST[text]`)");

Altså den vil ikke legge til noen nye rader i tabellen. Har connecta og alt det der, klarer å hente ut values men den vil ikke legge inn av en eller annen grunn.

 

Håper at det det noen her som kan se feilen :(

Lenke til kommentar
Videoannonse
Annonse
Er det noen som kan se hvorfor denne koden ikke virker?

mysql_query("INSERT INTO news (`time`, `title`, `author`, `text`) VALUES (`$time`, `$_POST[title]`, `$_POST[auth]`, `$_POST[text]`)");

Altså den vil ikke legge til noen nye rader i tabellen. Har connecta og alt det der, klarer å hente ut values men den vil ikke legge inn av en eller annen grunn.

 

Håper at det det noen her som kan se feilen :(

7267468[/snapback]

Jeg ser tre feil.

Først og fremst må du gjøre som nomore sier, fjerne fnuttene der du angir hvilke kolonner ting skal settes inn i.

For det andre så skal assoiative arrayers indekser angis med fnutter.

$_POST['title'] <- RIKTIG

$_POST[title] <- GALT

 

Og sist men ikke minst, du legger data rett inn i databasen uten å tenke på sikkerhet. Så lenge brukerinput rett i en database uten å sjekke den først, det er som å putte hodet i giljotinen og vente på at brukeren skal slippe kniven.

Mer lesing:

http://no2.php.net/manual/en/language.types.array.php "Avsnitt: Array do's and don'ts"

http://no2.php.net/manual/en/function.mysq...cape-string.php for å sjekke/sikre brukerinput

http://dev.mysql.com/doc/refman/4.1/en/insert.html INSERT syntaksen

 

Dessuten håper jeg du tar vare på returverdien fra mysql_query og sjekker denne, men det ser vi ikke ut fra koden du la inn.

Endret av Nazgul
Lenke til kommentar

Feil Nazgul. Du har rett i det med sikkerheten, men problemet er ikke bruken av ` rundt kolonnenavn, for det er helt korrekt i forhold til mysql. Det som er problemet er bruken av ` rundt dataene. Der skal man bruke ' . Tilslutt er det helt korrekt å bruke $_POST[title] siden det er inni en " " . $_POST['title'] vil ikke engang fungere, og det står det ironisk nok der du linker også ;)

Endret av Ernie
Lenke til kommentar

Fikk bare med meg denne.

You should always use quotes around a string literal array index. For example, use $foo['bar'] and not $foo[bar].

Nederst står det som Ernie sier,

Note: To reiterate, inside a double-quoted string, it's valid to not surround array indexes with quotes so "$foo[bar]" is valid.

Personlig skriver jeg alltid echo 'abc'.$_POST['minvar'].'123';

Så jeg escaper alltid variable, derfor har jeg aldri visst om eller hatt behov for den andre syntaksen.

Men ja, jeg sa feil.

 

Og mysql-manualen oppgir ihvertfall kolonnenavnene uten fnutter, så da antok jeg at det var feil.

Endret av Nazgul
Lenke til kommentar

I dette tilfellet:

$_POST[title] Riktig (Edit: Det var visst riktig allikevel)

$_POST['title'] Galt

{$_POST['title']} Riktig

 

Du trenger ikke nødvendig med fnutter rundt kolonnenavnene. Det er faktisk ikke lov med '-fnutter rundt kolonnenavnene. `-fnutter ser ut som er lov.

 

Det er ikke lurt å bruke `-fnutter rundt strengene. Jeg får feil i mine spørringer med det, og den tror at verdiene er blitt kolonnenavn. '-fnuttene er best å bruke.

` = ved siden av backspace-tasten

' = ved siden av enter-tasten

Endret av endrebjorsvik
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...