emilkje Skrevet 5. juli 2007 Skrevet 5. juli 2007 Hei alle sammen! Jeg trenger litt hjelp med hvordan jeg skal putte variabler i mysql_query() Foreløpig ser koden slik ut: <?php $table = strip_tags($_GET['kat']); $col= strip_tags($_GET['id']); $con = mysql_connect("localhost","emilt","passord"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("galleri", $con); $sql = "SELECT * FROM {$table} WHERE rel = {$col}"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { echo '<p>Tekst som skal vises fra databasen</p>' } mysql_close($con); ?> Men når jeg bruker denne koden får jeg følgende feilmelding: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Emil\WebDevelopment\www\TwinStudios\galleri\foto\diverse.php on line 25 der linje 25 = while($row = mysql_fetch_array($result)) Takker for alle svar
emilkje Skrevet 5. juli 2007 Forfatter Skrevet 5. juli 2007 Jeg kan ikke se at $table er satt? 9010442[/snapback] $table er satt helt øverst ;D
Gjest Slettet+142 Skrevet 5. juli 2007 Skrevet 5. juli 2007 $sql = "SELECT * FROM {$table} WHERE rel = {$col}"; $result = mysql_query($sql); echo mysql_error();
Tharzul Skrevet 5. juli 2007 Skrevet 5. juli 2007 Du mangler et lite ord i syntaksen din. mysql_fetch_array() tar to argumenter. Så koden din skal være: while($row = mysql_fetch_array($result, MYSQL_NUM)) { Resultatet da blir: $row[0], $row[1], osv. Eller: while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { Mens her blir resultatet: $row['ditt_navn_på_kolonnen_i_tabellen'], $row['den_andre_kolonnen'], osv.
emilkje Skrevet 5. juli 2007 Forfatter Skrevet 5. juli 2007 Jeg beklager, men: while($row = mysql_fetch_array($result, MYSQL_NUM)) og while($row = mysql_fetch_array($result, MYSQL_ASSOC)) gir meg akkurat samme feilmelding som i stad. Men hvis jeg bruker den opprinnelige koden i post 1 men bytter ut {$table} med "foto" og {$col} med "portretter", så får jeg det jeg er ute etter. Så koden i seg selv er det ikke noe galt med, det er bare det at jeg vil gjøre "foto" og "portretter" om til $_get['var'] håper jeg fikk forklart meg tydelig nok!
Gjest Slettet+142 Skrevet 5. juli 2007 Skrevet 5. juli 2007 Har du gjort som jeg posta? Altså å legge til dette rett under hvor mysql_query(..) kjøres? echo mysql_error(); Da vil du få opp feilmeldingen som mysql lagde. Ofte veldig mye til hjelp.
Tharzul Skrevet 5. juli 2007 Skrevet 5. juli 2007 I spørringen, hvorfor har du satt { } rundt $table ? Prøv uten og sjekk om det funker. { } skal jo bare brukes for arrays.
Gjest Slettet+142 Skrevet 5. juli 2007 Skrevet 5. juli 2007 {} virker like bra for både arrays og andre vanlige variabler...
Martin A. Skrevet 5. juli 2007 Skrevet 5. juli 2007 (endret) Du mangler et lite ord i syntaksen din. mysql_fetch_array() tar to argumenter. Så koden din skal være: while($row = mysql_fetch_array($result, MYSQL_NUM)) { Resultatet da blir: $row[0], $row[1], osv. Eller: while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { Mens her blir resultatet: $row['ditt_navn_på_kolonnen_i_tabellen'], $row['den_andre_kolonnen'], osv. 9010973[/snapback] Feil array mysql_fetch_array ( resource $result [, int $result_type] ) Ser du klammene? Det betyr at parametret er valgfritt. Og "or die( mysql_error() );" etter hver forespørsel mot databasen bør du legge til deg som en vane. PHP <?php $link = mysql_connect( "localhost", "user", "pass" ) or die( mysql_error() ); $sql = "SELECT * FROM diskusjon.no WHERE something = 'someotherthing'"; $res = mysql_query( $sql ) or die( mysql_error() ); Du trenger ikke å bruke det på funksjonene som henter info fra databasen, da det som regel går greit om tilkoblingen og spørringen går greit. Selv foretrekker jeg å bruke mysqli, gjerne som et objekt. Om jeg ikke befinner meg i en klasse fra før av. Endret 5. juli 2007 av M4rTiN
jorgis Skrevet 5. juli 2007 Skrevet 5. juli 2007 Kort fortalt; mysql_fetch_array() gir feilmelding fordi det ikke er noen resultater å hente ut. Det kan være flere årsaker, som at spørringen har en feil et sted (dette vil oppdages ved å kjøre mysql_error() (f.eks. i en or die()-sak)), eller at spørringen rett og slett bare returnerer 0 rader (dette kan testes med mysql_num_rows()). Tharzul: {} (krøllklammer) har ingenting med arrays å gjøre. De kan brukes til et par ting; 1. Referere til substrenger i en streng (her er [] også mulig, og er også anbefalt, siden å bruke {} til dette vil forsvinne i PHP6): $string = 'Hei alle sammen'; echo $string{3}; // output: 'i' echo $string[3]; // output: 'i' 2. Benytte "kompliserte" variabler i strenger: $string = "Hei {$lang['alle']} sammen"; // funker fint $string = "Hei $lang['alle'] sammen"; // parse error Det er god praksis å bruke {} rundt _alle_ variabler som benyttes i strenger, fordi variablene blir bedre synlig i koden, og fordi du da kan bruke mer kompliserte variabeluttrykk.
emilkje Skrevet 6. juli 2007 Forfatter Skrevet 6. juli 2007 God dag alle sammen! Her ble det visst mye på en gang for meg prøvde som du sa å sette inn echo mysql_error(); etter mysql_query(); da fikk jeg denne filmeldingen You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[foto] WHERE rel = [diverse]' at line 1 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Emil\WebDevelopment\www\TwinStudios\galleri\foto\diverse.php on line 26 Her ser det ut til at variablene har blitt plassert riktig inn i klammene, men syntaxen er fortsatt feil Takker for videre assistanse!
Martin A. Skrevet 6. juli 2007 Skrevet 6. juli 2007 Har du klammer ( [ ] ) i navnet på databasen og tabellene? Hvis ja, prøv uten.
Ståle Skrevet 6. juli 2007 Skrevet 6. juli 2007 [foto] WHERE rel = [diverse] skal vaere foto WHERE rel='diverse'
emilkje Skrevet 6. juli 2007 Forfatter Skrevet 6. juli 2007 Takk for svar Nå har jeg fått den til å fungere =) Det er riktig som ståle sier her, at det skal være 'diverse'. Trodde jeg hadde prøvd det, men tydligvis gjorde jeg en feil et eller annet sted. Takk igjen for alle svar!
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå