Bekomme nach umstellung auf PHP 7.1 folgenden Fehler

LuckySt

Mitglied
Hallo,
ich hoffe mir kann hier jemand weiter helfen.
Mein Anbieter hat die PHP Version auf 7.1 erhöht und nun bekomme ich folgenden Fehler:

Fatal error: Uncaught Error: Call to a member function query() on null in /.../statistik_counter_ereignisse.php:31 Stack trace: ... /.../statistik_counter_ereignisse.php on line 31

PHP:
include_once('setting.php');

$jahr = date('Y');
$totals = array('ball'=>0, 'kreis'=>0, 'linie'=>0);
$totalsj = array('ball'=>0, 'kreis'=>0, 'linie'=>0);

$sql1 = "SELECT type, COUNT(*) AS cnt FROM daten GROUP BY type";
foreach ($pdo->query($sql1) as $row)
{
    $totals[$row['type']] = $row['cnt'];
}

$sql2 = "SELECT type, COUNT(*) AS cnt FROM daten WHERE year LIKE '".$jahr."' GROUP BY type";
foreach ($pdo->query($sql2) as $row)
{
    $totalsj[$row['type']] = $row['cnt'];
}

Die Meldung bezieht sich auf
PHP:
foreach ($pdo->query($sql1) as $row)

Hoffe Ihr könnt mir wieder helfen.
 
Hi

wie die Fehlermeldung sagt, ist da wohl $pdo null, statt einem Objekt mit DB-Verbindung. Und von null kann man eben keine Methode aufrufen.

Was steht denn in settings.php (wo $pdo vermutlich herkommt?) (aber bitte Passwörter usw. unkenntlich machen, falls da welche sind)
 
Zuletzt bearbeitet:
Hallo,

vielen Dank für deine Antwort.

Dort steht nur folgendes drin:
PHP:
$pdo = new PDO('mysql:host=dbxxxxx.db.1and1.com;dbname=dbxxxxxxx', 'dboxxxxxxx', 'xxxxxxxxxxxxxx');
 
Hi,

mach mal aus dem "include_once" ein "require_once". Ich vermute dass er die "setting.php" nicht findet.
Alternativ schalte mal das Logging auf E_ALL.

Grüsse,
BK
 
"Undefined variable" ist da etwas seltsam.

Vielleicht eine blöde Frage, aber kann es sein, dass die setting.php kein <?php usw. hat?
Oder falls doch, kannst du die komplette Dateien einmal reinstellen - also als Datei raufladen (Button "Datei hochladen"), nicht nur den Text reinkopieren (und wieder ohne Passwort). Kann sein, dass da irgendwelche Unicodeprobleme am Werk sind...
 
Das ist komisch o_O Es scheint, als würden globale Variablen nicht oder nur anders gehandhabt werden. Auf die Schnelle konnte ich bei Google aber zu PHP 7 und globalen Variablen keine nennenswerten Änderungen finden. (Nicht, dass es schlecht wäre, die Nutzung globaler Variablen einzuschränken ;))

Versuch mal als kurzen Test $GLOBALS['pdo'] = new PDO(...); und dann im anderen Skript $pdo = $GLOBALS['pdo']. Geht das?
 

Neue Beiträge

Zurück