Yritän tarkistaa taulukosta table, että onko usernamea olemassa.
Tule virhe ilmoitus:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /plaa...plaa/Functions/login.inc.php on line 140
Mistä tälläinen virheilmoitus voisi johtua?
Jos usernamea ei löydy, niin eihän pitäisi tulla tällaista virheilmoitusta?
Entäs jos ei ole olemassa tuollaista taulua `${config_table}_sites` niin mitä sitten tapahtuu?
$userfound = false; $doit = "SELECT table FROM `${config_table}_sites`"; $res = mysql_query($doit,$c); while(($rows = mysql_fetch_array($res)) != FALSE) { if($rows->table == $username) { $userfound = true; break; } }
Opettele nyt ne debuggauksen alkeet.
<?php if (!$res) { die("Virhe kyselyssä: ".htmlspecialchars(mysql_error())); }
Lisäksi voisit opetella SQL:n ja PHP:n alkeet. Funktio mysql_fetch_array palauttaa taulukoita eikä olioita, ja "SELECT table" ei ole missään tapauksessa validia SQL:ää.
Minä tekisin sen näin:
<?php $kysely = mysql_query("SELECT tunnus FROM kayttajat WHERE tunnus = '$username'"); if(mysql_num_rows($kysely) != 0) { $userfound = true; }
Turha niitä kaikkia käyttäjiä on hakea, kun tiedetään jo mitä haetaan.
Ja turha hakea semmoisia tietoja, joita ei käytetä. Tässä riittää SELECT 1 FROM...
EDIT: Jos nyt verrataan vaikkapa SELECT * FROM
-tilanteeseen. Toki yksi kenttä tuskin enää tuntuu missään, mutta mitäpä silläkään.
Ok, kiitoksia vastauksista, tuossa mun SQL rakenteessa table pitäisi olla yhden taulunnimi, eikä avainsana, mutta en oo vielä päässyt varmuuteen asiasta, koska en ole saanut näkyviin taulukoiden nimiä.
EDIT: no nyt pääsin varmuteen ja tosiaan se on taulun nimi, eli table.
EDIT 2: Hei muuten, virhe ilmoitus esiintyy vieläkin(vaikka tein niin kuin neuvottiin), niin voisiko
johtua siitä, että "table" on myös SQL kielen avainsana. Jos näin, niin pitäisikö viittaukset tähän taulukkoon "table" tehdä jollain erityisellä tavalla? En itse voi enää muuttaa tuon taulukon nimeä ja joku on ei ole oikeen miettinyt, että miksi laittaa moisen nimen. Tsekkasin, niin table on SQL kielen avainsana.
Sori kun joudun kysellä näin paljon, oon joskus yliopistossa tehnyt vaikeitakin SQL kyselyharjoituksia, mutta meinaa unohtua. Nyt mulla on projekti, jolla on kiire ja kun en meinaa keksiä millään virhettä, niin on pakko kysyä apua.
SELECT blah FROM `table` toimii ainakin MySQL:ssä.
Joo, sain sen toimimaan, mutta tein sillain että pistin $muuttuja = "table" ja lisäsin tuon muuttujan kyselyyn niin se tulkitsi sen table tauluksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.