Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mysql virhe tauluun lisätessä

pistemies [03.04.2007 16:04:51]

#

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 '7 ',

Mitä tämä mahtaa olla suomeksi? Tämä tulee kun yritän lisätä tauluun tietoa. Virhe alkoi ilmaantua sen jälkeen, kun lisäsin yhden tiedon lisäyksen. Tiedon lähettämisessä ja vastaanottamisessa tämä lisäys on huomioitu.

Blaze [03.04.2007 16:22:56]

#

Syntaksivirhe, ja virhe on lähellä kohtaa, jossa on merkit 7 ja välilyönti.

Kristallipallo näyttää, että virhe tulee seuraavanlaisesta skenaariosta:

$data_kayttajalta = "Teal'c";
mysql_query("INSERT INTO taulu VALUES('" . $data_kayttajalta . "');");

jossa lopulliseksi kyselyksi siis muodostuu INSERT INTO taulu VALUES('Teal'c');, jossa MySQL lukee merkkijonon 'Teal' ja löytää sen jälkeen jotain odottamatonta -> syntaksivirhe.

Tällaisesta skenaariosta voi muuten olla paljon vaarallisempia seurauksia kuin vain syntaksivirhe: tuo mahdollistaa ns. SQL-injektion, jolla ilkeämielinen ihminen voi tehdä tietokannallesi melkein mitä vaan, aina DROP TABLE:sta lähtien.

Ratkaisu on eskapettaa $data_kayttajalta ajamalla se mysql_real_escape_string() -funktion läpi. mysql_real_escape_string()n manuaalisivulla on myös malliesimerkki tuosta injektiosta: https://www.php.net/manual/en/function.mysql-real-escape-string.php

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta