Apocalyptiq
18.10.2008, 15:59:22
Do obsługi MySQL wykorzystuje bibliotekę AdoDB. I chcę jedną z jej funkcji wrzucić do swojej funkcji:
$nr=1;
function addEvent($team,$plr,$event,$ok=1){
$db->Execute('INSERT INTO events (meczId,nr,team,plr,event,ok) VALUES('.$meczId.','.$nr.','.$team.','.$db->Quote($plr).','.$db->Quote($event).','.$ok.')');
$nr++;
}
Ale wtedy wywala mi błąd:
Fatal error: Call to a member function Execute() on a non-object in /opt/lampp/htdocs/siatka/sites/play.php on line 11
Jak wrzuce na początek tej funkcji linijke:
global $db;
to niby błędów strona nie wywala, ale w bazie nic się nie dzieje :/ To $db to klasa czy coś takiego? Deklarowana jest na początku dokumentu, i tam łączy się z bazą.
Wiem że można po prostu przekazywać zmienną $db w parametrze funkcji, ale może obejdzie się bez tego i jest jakiś prostszy sposób?
webdice
18.10.2008, 16:13:35
Przekazuj obiekt
db jako parametr funkcji, ewentualnie skorzystaj z
global" title="Zobacz w manualu PHP" target="_manual (ale nie jest to zalecane).
Apocalyptiq
18.10.2008, 16:26:23
Właśnie global jakoś mi nie chciało działać - może działa tylko przy zmiennych, a nie obiektach. Więc będę to $db przerzucał w parametrze, dzięki webdice za pomoc

Jednak ten błąd nie leżał po stronie $db - nie przekazałem do funkcji jeszcze dwóch innych zmiennych, które były globalne

Skorzystam jednak z tego global - dla $db i tamtych dwóch zmiennych.
mike
18.10.2008, 16:29:17
Cytat(Apocalyptiq @ 18.10.2008, 17:18:14 )

Właśnie global jakoś mi nie chciało działać - może działa tylko przy zmiennych, a nie obiektach.
A co za różnica? Obiekty również są zmiennymi. Źle to zastosowałeś skoro nie działało.
Cytat(Apocalyptiq @ 18.10.2008, 17:18:14 )

Więc będę to $db przerzucał w parametrze, dzięki webdice za pomoc

Rozwiążanie też niezłe. Wszystko byłoby lepsze od wykorzystania zmiennych globalnych.
Do przechowywania połączenia z bazą danych skorzystaj z czegoś takiego jak Rejestr. Znajdziesz w sieci sporo informacji o wzorcu programowania Rejestr (
ang. Register Pattern).