Tuskaa ja SQL erroreita

Eispekka

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'];

6

494

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • > 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-injektio

        Injektio 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

    1. Sanna Marin vetänyt leukoja 11 kertaa

      Tästähän oli joskus polemiikkia, kun muistaakseni lupasi kymmenen tai jotain vedellä. No nyt niin on, ainakin omien san
      Maailman menoa
      103
      6412
    2. Suomalainen tutkimus paljasti oudon asian vasemmistolaisista - he häpeävät itseään

      Kyllä, asia on faktaa. Suomalainen tutkimus osoittaa, että vasemmistolaisina itseään pitävät kansalaiset häpeävät itseää
      Maailman menoa
      123
      3067
    3. Sosialismia Tampereella: Virallinen ilmiantolinja avautuu kaupungissa

      Nyt siis mennään mansessa ihan justiinsa samaan malliin kuin entisessä Neuvostoliitossa, jossa saattoi ilmiantaa naapuri
      Maailman menoa
      318
      2856
    4. Kirjoita

      … jotakin minkä vain kaivattusi tietää
      Ikävä
      150
      2762
    5. Farmi Suomi: Kokeeko Frederik, 81, saman kohtalon kuin ikämies Danny?

      Danny, musiikkineuvos Ilkka Lipsanen, nähtiin mukana Farmi Suomi -realityssä v. 2024. Danny teki yllätysratkaisun ja tuo
      Tv-sarjat
      37
      2368
    6. Tyhmä persuväite = köyhä argumentti

      Väite, että vasemmistopuolueita äänestäisivät vain “köyhät, tapatyöttömät tai heikoilla lahjoilla varustetut”, kertoo en
      Maailman menoa
      80
      2328
    7. Tiesitkö? Andy McCoy ja Pelle Miljoona saavat taiteilijaeläkettä - Tämän suuruinen eläke on

      Ylimääräiset taiteilijaeläkkeet on jaettu ja 59 taiteilijaa sai sen. Taiteilijoiden keskimääräinen eläketulo jää hyvin a
      Maailman menoa
      76
      1780
    8. Tätä et nähnyt tv:ssä: Frederik paljastaa - Totuus "haisevasta jäynästä" pehtoorille Farmilla

      Frederik veti ns. herneen nenään ja päätti kostaa pehtoorille. Mitäs mieltä olet Frederikin "aamutoimista"? Lue jutt
      Tv-sarjat
      8
      1765
    9. Haluan sut

      Voitaisiinko tutustua paremmin toisiimme? Ovi on aina auki sinulle. Lähelle.
      Ikävä
      63
      1736
    10. Ellen Jokikunnas paljastaa kyynelehtien Ralph-pojasta: "Apua..."

      Ellen Jokikunnaksen ja hänen puolisonsa Jari Raskin perheestä ja taloprojektista Italiassa kertova Unelmia Italiassa -sa
      Suomalaiset julkkikset
      5
      1528
    Aihe