Hei, yritän ohittaa yhtä ongelmaa, mutta en saa tolkkua. Käsitykseni mukaan virhe on PHP:hen upottamastani SQL-pätkästä, jossa yritetään päivittää tietueen uudet arvot tietokantaan. Saan herjan, että tarkista syntaksi vastamaan MySQL-versiotasi. En sikäli usko herjaan, koska alkuperäinen esimerkkipäivitys toimii koneellani, muttei oman tietokantataulun kanssa.
Ihmettelen, miksi alla olevassa skriptissä on ensimmäinen arvon ympärillä lainausmerkit ('') ja hipsu ('), mutta toisten arvojen ympärillä vain hipsu ('). Miksi muuten hipsujen sisällä muuttujan ympärillä on nuo pisteet?
Ongelma on tässä kohdassa enkä ole löytänyt ratkaisua.
$query = 'UPDATE
movie
SET
movie_name = "' . $movie_name . '",
movie_year = ' . $movie_year . ',
movie_type = ' . $movie_type . ',
movie_leadactor = ' . $movie_leadactor . ',
movie_director = ' . $movie_director . ',
movie_release = ' . $movie_release . ',
movie_rating = ' . $movie_rating . '
WHERE
movie_id = ' . $_POST['movie_id'];
Tuskaa ja SQL erroreita
6
483
Vastaukset
> Ihmettelen, miksi alla olevassa skriptissä on ensimmäinen arvon ympärillä lainausmerkit ('') ja hipsu ('), mutta
> toisten arvojen ympärillä vain hipsu ('). Miksi muuten hipsujen sisällä muuttujan ympärillä on nuo pisteet?
Koko UPDATE on hipsujen sisällä. Stringit pitäisi siinä erotta sitten lainausmerkillä. Piste on katenointimerkki, mikä on tarpeen jos erotat stringin osat hipsuilla, mutta sitten vaadittaisiin silti ne lainausmerkit.
Jos on PHP:tä väärin muista, kokeile seuraavaa:
$query = 'UPDATE
movie
SET
movie_name = "$movie_name",
...
movie_rating = "$movie_rating"'
WHERE
movie_id = "$_POST['movie_id']";'
Eri asia sitten on, onko järkevää muodostaa updatea tuolla tavoin. Voipi ilkeä käyttäjä vähän sotkea kantaa...- eisPekka55
Miten sinusta sitten kannattaisi asia tehdä, koska olen tietoinen siitä, että ilkeitä käyttäjiä varten kannattaa myöskin valmistautua.
- preparoitu paatti
eisPekka55 kirjoitti:
Miten sinusta sitten kannattaisi asia tehdä, koska olen tietoinen siitä, että ilkeitä käyttäjiä varten kannattaa myöskin valmistautua.
Oletko tutustunut tietoturvallisuutta vaarantavaan tekniikkaan nimeltän "SQL-injektio"? Oletan että tässä viitataan siihen.
http://fi.wikipedia.org/wiki/SQL-injektio - Eispekka
preparoitu paatti kirjoitti:
Oletko tutustunut tietoturvallisuutta vaarantavaan tekniikkaan nimeltän "SQL-injektio"? Oletan että tässä viitataan siihen.
http://fi.wikipedia.org/wiki/SQL-injektioInjektio terminä oli tuttu ja tähän viitattiin, Se miten siltä parhaiten suojautua on vielä epäselvää.
- foobarfoo
Eispekka kirjoitti:
Injektio terminä oli tuttu ja tähän viitattiin, Se miten siltä parhaiten suojautua on vielä epäselvää.
Php:ssä MySqlle näyttäisi olevan tarjolla prepared statementit, jotka huolehtivat tuosta arvojen escapeemisesta, http://php.net/manual/en/pdo.prepared-statements.php
- DQ
Luulen että jokin noista muuttujista on tyhjä, jolloin päivitys ei onnistu. Eli kokeile print $query; komentoa, jotta näet noi kamat jotka yrität päivittää. Todennäköisesti omalla koneellasi on eri php asetukset joten koodia joutunee muuttamaan (riippuen mistä nuo $movie_# muuttujat tulevat), $movie_name -> $_POST["movie_name"] tai $movie_name -> $_GET["movie_name"].
Hipsut ovat ensimmäisissä kohdissa sen takia että kyse on string tyyppisestä muuttujasta, kun vuon year muuttujan kohdalla kyse on luvusta 1977 tms. Pisteet katenoivat muuttujan arvot tuohon päivityslausekkeeseen. Eli vastaava kuin javascriptissa merkki.
Mutta ongelma on todennäköisesti siinä että movie_year tai movie_type (tai $_POST["movie_id"]) on tyhjä vastaten alkuperäiseen kysymykseen..
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Björn Wahlroos, maataloustuet lakkautettava
Sanoo pankkimies. Mitäs persut ja muut tukinulliem perskärpäset tähän? "Wahlroos listaa kansallisen maataloustuen. – I1553930Persut päättivät hiilivoiman kieltämisestä Suomessa
Moni on jo unohanut kuka hyväksyi hiilivoimaloiden kieltämisen Suomessa: persut Sukupuolineutraalit liikennemerkitk853353Vain persut vastustivat hiilivoimaloiden alasajoa
Persut vastusti jyrkästi hiilen kieltolakia ja on myöhemmin vaatinut hiilivoimaloiden pitämistä käytössä. He perusteliva852805Nalle Wahlroos ei ulise kuten Teemu Selänne sähkölaskuista
Nalle "hah hah" nauroi saamistaan sähkötuista, kun taas Teemu-poika itkeä tirautti kovasta sähkön hinnasta. Nalle nauro442699Selvästi näyttää siltä, että SDP:n kannattajat hyväksyy kiusaamisen
ja seksuaalisen ahdistelun, kun puolueen kannatus pysyy korkealla. Mitä tämä kertoo demari-äänestäjien moraalista?712660Kyllä nämä nyky autonakut ja autotki on heikloja
Vuoden vanha akku, eikä inahdakaan.... Pistin vara-akun just lataukseen ja lähen sillä antamaan apuvirtaa Jos ei toimi,232402Muistattekos kuinka kokoomus ja persut vinkuivat sähkön hinnasta?
Oppositiossa vuonna 2022, kun sähkön hinta uhkasi nousta 20 senttiin kilowattitunnilta? Nyt ovat hiiren hiljaa, kun pitä1402342Mikä aate kaiken pahan takana?
Se laiskistuttaa kansat, opettaa vaatimaan etuisuuksia, syleilee maailmoja eikä omaa kansaa.1522225Päivi Räsäsen seksipaljastus loksauttaa Katja Ståhlin leuat! Elämäni biisi kohujakso tv:ssä!
Elämäni biisi -suosikkisarjan uusinnat ovat startanneet ja nyt vuorossa on sarjan 2. jakso v. 2019. Sinisille sohville392052Muistan vuosikymmenten takaa
Toivottavasti voit hyvin ja jaksat työssäsi. Olet upea ja erinomainen ihminen, toivon kaikkea hyvää.121946