Fejl i kode, nogen der kan hjælpe?

Tags:    php

<< < 123 > >>
Jeg har denne kode
Fold kodeboks ind/udKode 

Men der kommer følgende fejl:
"Warning: extract()[function.extract]:first argument should be an array in *sti* on line 30"

Jeg formoder fejlen befinder sig i følgende del af koden:
$sql = "select * from varebeskrivelse, vareoversigt where vareoversigt.id = '.$id'";
$result = $db->query($sql);
$row = $result->fetch();
extract($row);

Linje 30 er "extract($row);".

Nogen der kan hjælpe?



Og hvad er $db for et objekt ? Hvad returnerer $db->query($sql) ?
Hvad returnerer $result->fetch() ?

Prøv at se om $result->fetch() kunne finde på IKKE at returnere noget (hvis f.eks. dit query ikke returnerer nogen rækker).



Det er nok fordi at extract funktionen skal have et array som argument, og du har åbnebart ikke fået et array tilbage.
Kunne man evt. få koden for extract funktionen at se?




Kunne man evt. få koden for extract funktionen at se?


Well...PHP er open source, så det kan du godt :-)
extract() er indbygget i PHP:
http://dk2.php.net/manual/en/function.extract.php



Beskrivelsen af Fetch:
Fetch results from a prepared statement into the bound variables

og den returnerer enten true eller false. Men nu er der ikke tale om hverken Prepared Statement og du skal bruge et array, ikke true/false.

Det du leder efter, er fetch_array() i stedet for fetch().

Fold kodeboks ind/udPHP kode 




Niklas: Det virker ikke :(

Robert:
$db = &new MySQL($host,$user,$pass,$name);

Resten har jeg lidt svært ved at svare på, kan det uddybes? :$



Din database-class, er den hjemmelavet? For så kan vi få svært ved at hjælpe, da vi så ikke ved om fetch() returnerer et array.



Altså den her del af koden har jeg taget fra følgende side:
http://www.thewatchmakerproject.com/journal/276/building-a-simple-php-shopping-cart
Og så bare ændret det så det passede til det jeg laver, så jeg kender ikke koden helt i bund.
Så nej, hjemmelavet er den ikke - i hvert fald ikke af mig :$



Altså den her del af koden har jeg taget fra følgende side:
http://www.thewatchmakerproject.com/journal/276/building-a-simple-php-shopping-cart
Og så bare ændret det så det passede til det jeg laver, så jeg kender ikke koden helt i bund.
Så nej, hjemmelavet er den ikke - i hvert fald ikke af mig :$


EEeeew....det er godt nok den mest lyserøde side jeg længe har set...men anyway. Koden til fetch() metoden er her:
Fold kodeboks ind/udKode 


Som du kan se, så returnerer den kun et array, hvis forespørgslen havde et resultat. Dvs. at hvis din søgning ikke returnerer nogen rækker, så returnerer den false.

Du kan kalde fetc() flere gange og så vil den returnere de efterfølgende rækker. Når der ikke er flere, returneres igen false.



Om den så havde været lyserød med lyserød skrift havde jeg brugt den alligevel, det er nemlig den eneste kode jeg kunne finde, som jeg også kunne få til virke bare halvt ;)

Nå, men til sagen..
Hvad mener du med "kalde den flere gange"? bare skrive "fetch();" flere gange efter "$row=$result->fetch();"? Det kan jeg næsten ikke tro :)



Noget i stil med:

Fold kodeboks ind/udKode 




<< < 123 > >>
t