mysql - virhe.. missä vika?

Saan seuraavanlaisen virheilmoituksen:

Warning: mysql_query(): 2 is not a valid MySQL-Link resource in /var/www/index.php on line 148
Virhe suoritettaessa komentoa
SELECT * FROM cars WHERE person.id = 12 AND person.cars_id = cars.id

ja tässä koodi:

$query = "SELECT * FROM cars WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
$haku = mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
while($res = @mysql_fetch_array($haku, MYSQL_ASSOC)) $result[] = $res;
mysql_close($yhteys);

Eli mistä virheilmoitus johtuu? Tarkoitukseni olisi siis hakea cars taulusta kaikki tietyn henkilön autot.
5211
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Jos vika on muualla, ei mitään havaintoa, mutta ainakin tuossa SQL-lausekkeessa on fiba: person-taulu puuttuu.

SELECT *
FROM cars, person
WHERE person.id = 12
AND person.cars_id = cars.id

Äänestä
  • Eipä tapahtunut mitään muutosta, vaikka tuon korjasin. Ennen tätä virheilmoitusta, minulla oli jotain häikkää edeltävillä riveillä, jotka menevät näin:

    $query = "UPDATE cars,person SET cars.car".$_GET['auto']." = 0 WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
    mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
    mysql_close($yhteys);

    Mielestäni tämäkin kyllä on nyt oikein, kun siitä ei tule mitään virheilmoitusta..

    Äänestä

  • perskls kirjoitti:

    Eipä tapahtunut mitään muutosta, vaikka tuon korjasin. Ennen tätä virheilmoitusta, minulla oli jotain häikkää edeltävillä riveillä, jotka menevät näin:

    $query = "UPDATE cars,person SET cars.car".$_GET['auto']." = 0 WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
    mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
    mysql_close($yhteys);

    Mielestäni tämäkin kyllä on nyt oikein, kun siitä ei tule mitään virheilmoitusta..

    $query = "UPDATE cars,person SET cars.car".$_GET['auto']." = 0 WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
    mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
    mysql_close($yhteys);



    joo kyllä joku nyt on pielessä tässä pätkässä, kun sen ottaa pois, niin tuon jälkeiset rivit alkavat toimia... Osaisiko joku auttaa?

    Äänestä

  • perskls kirjoitti:

    $query = "UPDATE cars,person SET cars.car".$_GET['auto']." = 0 WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
    mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
    mysql_close($yhteys);



    joo kyllä joku nyt on pielessä tässä pätkässä, kun sen ottaa pois, niin tuon jälkeiset rivit alkavat toimia... Osaisiko joku auttaa?

    korjata tuo $yhteys siitähän se valittaa.

    tosin tuo kysely vois olla muotoa "select jotain from jostain a, jostain b where b.car_id = a.id"

    Äänestä

  • jallakebab kirjoitti:

    korjata tuo $yhteys siitähän se valittaa.

    tosin tuo kysely vois olla muotoa "select jotain from jostain a, jostain b where b.car_id = a.id"

    Ylempänä koodissa on rivit:

    $yhteys = mysql_connect($server, $user, $pass) or die("Virhe kytkettäessä tietokantaan!");
    mysql_select_db($database,$yhteys) or die("Virhe valittaessa tietokantaa!");

    Olen aloittelija ja olen vain tehnyt koodia muiden esimerkkien ja tutoriaalejen pohjalta, mutta miten tässä tuo yhdistäminen kantaan tulisi hoitaa? Entä milloin yhteys kannattaa katkaista? ONko olemassa jotain nyrkkisääntöä?

    Äänestä

Kommentoi aloitusta


voiprkl kirjoitti:

Saan seuraavanlaisen virheilmoituksen:

Warning: mysql_query(): 2 is not a valid MySQL-Link resource in /var/www/index.php on line 148
Virhe suoritettaessa komentoa
SELECT * FROM cars WHERE person.id = 12 AND person.cars_id = cars.id

ja tässä koodi:

$query = "SELECT * FROM cars WHERE person.id = ".intval($_GET['id'])." AND person.cars_id = cars.id";
$haku = mysql_query($query, $yhteys) or die('Virhe suoritettaessa komentoa'.$query);
while($res = @mysql_fetch_array($haku, MYSQL_ASSOC)) $result[] = $res;
mysql_close($yhteys);

Eli mistä virheilmoitus johtuu? Tarkoitukseni olisi siis hakea cars taulusta kaikki tietyn henkilön autot.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu