PDO - Call to undefined function prepare()

Tags:    php pdo

Hej
Jeg er nu gået igang med at prøve kræfter med PDO og indtil videre fungerer det fint. Dog har jeg nu lagt et par SQL-statements ind i funktioner i PHP. Blot for at teste om det kunne lade sig gøre, har jeg lavet denne test-funktion:
Fold kodeboks ind/udPHP kode 

Koden inde i min funktion virker fint, da jeg kan tage den ud på en blank side og blot udføre den, efter at have inkluderet den fil der opretter min PDO.

Men når jeg placerer min kode inde i en funktion, så får jeg denne fejl:
Fold kodeboks ind/udKode 


Hvad er det der går galt? Skal man gøre noget specielt for at kunne bruge PDO inde i sine funktioner?



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du mangler at hive variablen $db med ind, $db er formentlig den variabel der indeholder din PDO instans.

Mulighederne er mange:
1) At lægge den til, som en parameter til din funktion.
2) Lave en global $db;
3) Lave en klasse.
4) Lave en singleton klasse

Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 


Hverken 1 eller 2 er gode løsninger. 3 og 4 er bedre. Om 3 er bedre end 4, det må du selv vurdere. :o)



Indlæg senest redigeret d. 29.07.2013 20:59 af Bruger #10216
Hej
Jeg er nu gået igang med at prøve kræfter med PDO og indtil videre fungerer det fint. Dog har jeg nu lagt et par SQL-statements ind i funktioner i PHP. Blot for at teste om det kunne lade sig gøre, har jeg lavet denne test-funktion:
Fold kodeboks ind/udPHP kode 

Koden inde i min funktion virker fint, da jeg kan tage den ud på en blank side og blot udføre den, efter at have inkluderet den fil der opretter min PDO.

Men når jeg placerer min kode inde i en funktion, så får jeg denne fejl:
Fold kodeboks ind/udKode 


Hvad er det der går galt? Skal man gøre noget specielt for at kunne bruge PDO inde i sine funktioner?



du skal lige have en global på da du kalder din $db inde i en function

Fold kodeboks ind/udPHP kode 





Så langt så godt. Nu har jeg tilføjet global $db; til alle funktioner der benytter sig af PDO.

Min testSQL funktion virker nu fint, men en anden funktion jeg benytter vil ikke samarbejde.
Fold kodeboks ind/udPHP kode 

I skal ikke tage jer af at funktionen ikke er helt færdig, da den skal køre den hentede data igennem yderligere behandling, men denne del har jeg ikke lavet endnu. Lige nu skal den blot udskrive mit $prep_data array, så jeg kan se hvad det indeholder.
Når jeg kalder den ovenstående funktion, så får jeg denne fejl:
Fold kodeboks ind/udPHP kode 

Line 124 er min $query = $db-prepare(...);

Måske ville min filstruktur være en fordel at kende til:
Fold kodeboks ind/udKode 

I init.php inkluderer jeg først min db.func.php og derefter generic.func.php. Inde i generic.func.php inkluderer jeg users.func.php
Min testSQL() funktion lå i users.func.php, mens ovenstående getSiteConfig() funktion ligger direkte i generic.func.php. Men min struktur skulle jo ikke være noget problem, da alle filer undtagen init.php ikke indeholder andet en funktioner.



Din $db er formentlig ikke defineret før du kalder getSiteConfig();



Det skulle den gerne være.
Fold kodeboks ind/udPHP kode 




@kenneth hansen er det en skrivefejl du ikke har > i denne linje
Line 124 er min $query = $db-prepare(...);
skal vel se sådan ud
Line 124 er min $query = $db->prepare(...);




Ja. Det er ting som man ikke altid lægger mærke til, men ja. Der manglede ">". Jeg takker. Nu virker det hele igen :)



t