login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Fatal error: Call to a member function prepare() on a non-object

Offline UpLink - 08/05/2015 14:40
Avatar van UpLink... Beste sima's,

Ik ben al even bezig met het zoeken naar een probleem.

De website word van de ene hosting naar de andere gezet met exact dezelfde php versie... Op de ene hosting werkt die perfect... op de nieuwe niet meer.
Daar krijgen we telkens opnieuw dezelfde foutmelding.
Namelijk: Fatal error: Call to a member function prepare() on a non-object in .../lib/shizzle/shizzle-2.0/data/db.class.php on line 199

De file met het probleem vind je hier: Plaatscode: 142441

Kan er iemand misschien even helpen waar het fout gaat? Ik ben geen PHP-expert, dus ik kan iets over het hoofd zien.

Alvast bedankt

3 antwoorden

Gesponsorde links
Offline Thomas - 08/05/2015 14:55 (laatste wijziging 08/05/2015 15:03)
Avatar van Thomas Moderator Is dit iets wat je zelf hebt geschreven? Of is dit een library van het een of ander?

Waarschijnlijk is $this->connection NULL omdat je deze als private variable declareert (waarom declareer je die uberhaupt hier als deze uit de parent class komt)?

Doe een var_dump() op $this->connection.

Staat er een try-catch om je creatie-statement van een ShizzleDb object? Fatal errors treden ook op als exceptions niet opgevangen worden.

Staat error weergave aan? (error_reporting(E_ALL), ini_set('display_errors', 'stdout'))?
Wat zeggen je logs?

EDIT: regel 241-242 zet hier eens iets tussen, bijvoorbeeld:
  1. die('connectie mislukt');


EDIT: deze class is trouwens knetter inefficient, er wordt voor elke insert/update/bewerking een verbinding gemaakt, en daarna wordt er weer opgehangen... ayyy lmao
Offline UpLink - 08/05/2015 15:21
Avatar van UpLink ... Wij hebben deze library niet zelf geschreven. Iemand anders heeft dat gedaan maar die werkt hier niet meer...
Het probleem is dat op de oude hosting dit wel gewoon werkte en op de nieuwe niet. En dat terwijl de php-versie wel dezelfde is.

Het enige dat verschilt is de mysql versie:

nieuwe host: PDO Driver for MySQL, client library version 5.0.91
oude host: Client API version 5.1.73

Wat in de php info ook verschilt is dat er een socket bijstaat op de oude hosting en bij de nieuwe niet.

Kan het daar aan liggen?
Offline Thomas - 08/05/2015 15:50 (laatste wijziging 08/05/2015 16:07)
Avatar van Thomas Moderator Mogelijk. Het kan ook liggen aan het feit dat "localhost" niet geresolved wordt naar "127.0.0.1" of dat andere hostnames niet (goed) geconfigureerd zijn, of dat je nieuwe server een ander IP heeft waar geen connecties vandaan gemaakt mogen worden?

Er is wat voor te zeggen om altijd IP-adressen voor je host te gebruiken, dat scheelt je weer een lookup.

EDIT:
probeer: localhost te veranderen naar 127.0.0.1 (mits van toepassing)
controleer: de user credentials van je database user, met name vanaf welke IP's / hostnames deze een verbinding mag maken
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s