mysql-kysely

mikä vikana?

Osaako joku sanoa mikä vikana alla olevassa kyselyssä:

$kysely = mysql_query("SELECT * FROM mopot WHERE Merkki = '$_POST['merkki']'");

tuohon riviin siis viittaa virheilmoitus, olen koittanut tuota muuttaa vaikka miten mutta aina sama juttu - ei toimi.

6

423

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • eikunvaan

      Helpottais jos tietäisi minkä virheilmoituksen tulostaa?

      Oletko kokeillut näin:

      $kysely = mysql_query("SELECT * FROM mopot WHERE Merkki = ' ".$_POST['merkki']." ' ");

      Eli lainausmerkit ja merkkijonoliitos tuohon $_post:in ympärille?

      • mutta....

        sain toimimaan, niin että enää valittaa viimeistä riviä koodissa:
        Parse error: syntax error, unexpected $end in... on line 40

        ja tuolla ei ole kuin ....


      • eikunvaan
        mutta.... kirjoitti:

        sain toimimaan, niin että enää valittaa viimeistä riviä koodissa:
        Parse error: syntax error, unexpected $end in... on line 40

        ja tuolla ei ole kuin ....

        Jostain on sulta unohtunut sulkea hakasulku }


    • Vaan näin

      Jos jostain syystä haluat kerjätä ongelmia käyttämällä antiikkisia mysql-funktioita niin muista filtteröidä kaikki käyttäjiltä saamasi merkkijonot ensin ei-sallittujen merkkien varalta ja sen jälkeen eskapettaa ne merkkijonot käyttäen funktiota mysql_real_escape_string(). Myös magic_quotesin päälläolo pitää tarkastaa, jos tuotantoympäristö ei ole tarkasti tiedossa, ja tarvittaessa ajaa kaikki käyttäjien syötteet stripslashes()-funktion lävitse. Em. vaiheet ovat pakollisia jos olet skriptiäsi laittamassa julkisesti esille, eikä yhtäkään niistä voi jättää välistä.

      Vanhentuneiden mysql-funktioiden sijasta on parempi kuitenkin käyttää PDO:ta:

      // Filtteröi käyttäjän syöte
      $merkki = preg_replace('/[^a-z]/', '', $_POST['merkki']);

      // Luo tietokantayhteys
      try {
      $dbh = new PDO('localhost', 'tunnus', 'salasana');
      }
      catch (PDOException $e) {
      die($e->getMessage();
      }

      // Suorita kysely
      $stmt = $dbh->prepare('SELECT * FROM mopot WHERE Merkki = ?');
      $stmt->execute(array($merkki));

      // Sijoita mopot taulukkoon
      $mopot = $stmt->fetchAll();

      • Vaan näin

        // Luo tietokantayhteys
        try {
        $dbh = new PDO('mysql:localhost;dbname=tietokanta', 'tunnus', 'salasana');
        }
        catch (PDOException $e) {
        die($e->getMessage());
        }


      • fjjfa

        Toki PDO:n functioita kannattaa käyttää tai sitten MYSQLI:n mikäli tietää että vain MySQL tullaan käyttämään, MYSQLI on hieman monipuolisempa kuin PDO.

        Tuossa sinun esimerkissäsi ihmetyttää
        // Filtteröi käyttäjän syöte
        $merkki = preg_replace('/[^a-z]/', '', $_POST['merkki']);

        Mitä tuolla saavutetaan?
        Aika outoa olisi jos tietokannassa merkki muutettaisiin noin.

        Ja tuota sinun esimerkkiäsi muuttaisin niin, että jos kysely epäonnistuu niin se antaisi poikkeuksen ja se siepattaisiin. Näin virheenkäsittely on helppoa.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kuka paiskasi vauvan betoniin Oulussa?

      Nimi esiin.....
      Oulu
      80
      5029
    2. Riikan kukkaronnyöri on umpisolmussa

      Kulutus ei lähde liikkeelle, koska kansalaiset eivät usko, että: – työpaikka säilyy – tulot eivät romahda – talous ei h
      Maailman menoa
      73
      4668
    3. Jos vedetään mutkat suoraksi?

      Niin kumpaan ryhmään kuulut? A) Niihin, jotka menevät edellä ja tekevät? Vai B) Niihin, jotka kulkevat perässä ja ar
      Sinkut
      111
      2997
    4. Tanskan malli perustuu korkeaan ansioturvaan

      Ja vahvoihin työllisyys- ja kotoutumispalveluihin. Suomessa Riikka on leikannut juuri näitä: palkkatukea, työttömyysturv
      Maailman menoa
      83
      2917
    5. Epäily: Räppäri yritti tappaa vauvansa.

      https://www.mtvuutiset.fi/artikkeli/epaily-mies-yritti-tappaa-vauvansa/9300728 Tämä on erittäin järkyttävä teko täysin p
      Maailman menoa
      23
      2384
    6. Vain vasemmistolaiset ovat aitoja suomalaisia

      Esimerkiksi persut ovat ulkomaalaisen pääomasijoittajan edunvalvojia, eivät auta köyhiä suomalaisia.
      Maailman menoa
      59
      2025
    7. Anteeksipyyntöni

      Jätän tähän anteeksipyyntöni sinulle, koska en voi sanoa sitä missään muuallakaan. Pyydän anteeksi, jos purkamani tuska
      Järki ja tunteet
      20
      1760
    8. Miten must tuntuu

      et sä ajattelet mua just nyt
      Ikävä
      32
      1523
    9. Sydämeni valtiaalle

      En täältä aio asioita kysellä. Haluan tuoda tiedoksesi, että pohjimmiltani en ihmisiä tahdo satuttaa ja ajattelen muiden
      Ikävä
      113
      1415
    10. Kun et vain tajua että

      sua lähestytään feikkiprofiililla :D Hanki aivot :D m-n
      Ikävä
      185
      1318
    Aihe