Gå til innhold

Problem med mysql og get[variabel]


Anbefalte innlegg

Skrevet

Hei alle sammen! :D

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 :)

Videoannonse
Annonse
Gjest Slettet+142
Skrevet

$sql = "SELECT * FROM {$table} WHERE rel = {$col}";

$result = mysql_query($sql);

echo mysql_error();

Skrevet

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.

Skrevet

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

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.

Gjest Slettet+142
Skrevet

{} virker like bra for både arrays og andre vanlige variabler...

Skrevet (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 av M4rTiN
Skrevet

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. :)

Skrevet

God dag alle sammen!

Her ble det visst mye på en gang for meg :p

 

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 :dontgetit:

 

 

Takker for videre assistanse! :)

Skrevet

Takk for svar :D

 

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! :D

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...