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
445
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
- 1292063
Noniin rakas
Annetaanko pikkuhiljaa jo olla, niin ehkä säilyy vienot hymyt kohdatessa. En edelleenkään halua sulle tai kenellekään mi1051876Kumpi vetoaa enemmän sinuun
Kaivatun ulkonäkö vai persoonallisuus? Ulkonäössä kasvot vai vartalo? Mikä luonteessa viehättää eniten? Mikä ulkonäössä?841659Lasten hyväksikäyttö netissä - Joka 3. nuori on saanut seksuaalisen yhteydenoton pedofiililtä
Järkyttävää! Lapsiin kohdistuva seksuaalinen hyväksikäyttö verkossa on yhä pahempi ongelma. Ulkolinja: Lasten hyväksikäy641524Multa sulle
Pyörit 24/7 mielessä, kuljet mun mukana, mielessä kyselen sun mielipiteitä, vitsailen sulle, olen sydän auki, aitona. M331192- 821148
Nainen, olen tutkinut sinua paljon
Salaisuutesi ei ole minulle salaisuus. Ehkä teimme jonkinlaista vaihtokauppaa kun tutkisimme toisiamme. Meillä oli kumm561132- 1101093
Mies, eihän sulla ole vaimoa tai naisystävää?
Minusta tuntuu jotenkin, että olisit eronnut joskus, vaikka en edes tiedä onko se totta. Jos oletkin oikeasti edelleen s471066Onko sulla empatiakykyä?
Etkö tajua yhtään miltä tämä tuntuu minusta? Minä ainakin yritän ymmärtää miltä sinusta voisi tuntua. En usko, että olet441013