einfach nicht mehr aus der DB ausgeben
Ankündigung
Einklappen
Keine Ankündigung bisher.
SET time_zone = 'Europe/Berlin'
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ich hab da was gefunden: SET time_zone = 'Europe/Berlin'; Das kann man doch bestimmt auch für PDO ummünzen?! HIIIILLFFEEEE
Kommentar
-
Ein Teilcode der 4 verschiedene if Abfragen umfasst:
Code:if($rubrik != "Angebote" && isset($plz)){ $ergebnis = ogdbPLZnearby($plz, $select); $value = '"' . implode('","', $ergebnis) . '"'; $sql = "SELECT titel,Auktionsnummer FROM angebote WHERE top = top AND plz IN ($value) AND kategorie = '{$rubrik}' AND NOT timediff(now(), angebote.dauer) > 0 ORDER BY `dauer` DESC "; }
Kommentar
-
Führe mal folgendes Script aus und kopiere das Ergebnis hier rein:
Bei der Verbindung zur DB, 1. Zeile, nimmst du natürlich deine Daten!
PHP-Code:$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $pdo->query("SELECT @@global.time_zone, @@session.time_zone, now();");
$result = $query->fetchAll(PDO::FETCH_ASSOC);
echo 'Database Time Setting:';
echo '<pre>';
print_r($result);
echo '</pre>';
echo 'PHP Timezone is set to ' . date_default_timezone_get() . "<br>\n";
$dt = date_create()->format('Y-m-d H:i:s');
echo $dt;
Kommentar
-
Prima.
Du nimmst folgenden Code und kopierst ihn oberhalb der ganzen if-Bedingungen
PHP-Code:$dt = new DateTime('now', new DateTimeZone('UTC'));
$dt->setTimezone(new DateTimeZone('Europe/Berlin'));
$de_now = $dt->format('Y-m-d H:i:s');
Diese fügst du in die Abfragen ein anstatt des now(), welches du jetzt verwendest.
Hier mal mit deinem Code von vorhin
PHP-Code:<?php
$dt = new DateTime('now', new DateTimeZone('UTC'));
$dt->setTimezone(new DateTimeZone('Europe/Berlin'));
$de_now = $dt->format('Y-m-d H:i:s');
//weiterer Code
if($rubrik != "Angebote" && isset($plz)){
$ergebnis = ogdbPLZnearby($plz, $select);
$value = '"' . implode('","', $ergebnis) . '"';
$sql = "SELECT titel,Auktionsnummer FROM angebote WHERE top = top AND plz IN ($value) AND kategorie = '{$rubrik}' AND NOT timediff({$de_now}, angebote.dauer) > 0 ORDER BY `dauer` DESC ";
}
?>
- 1 Likes
Kommentar
-
Es geht noch viel schneller:
Einfach die database.php um eine Zeile erweitern.
Code:<?php $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', '',[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); $pdo->exec("SET time_zone='Europe/Berlin';");
Fündig bin ich geworden auf stackoverflow.com
mit den Infos von zwischendurch von Dir...
Kommentar
-
Bei mir ging
"SET time_zone='Europe/Berlin';"
nicht.
'Kannst du aber gerne testen.
Ob es geht oder nicht hängt von mehreren Dingen ab, die dafür zuständig sind. Da bei dir auch System steht und keine Zeitzone, gehe ich mich mal besser auf Nummer sicher.
Wen es interessiert kann dazu das Handbuch konsultieren und sollte auch die Kommentare dazu lesen.
Kommentar
-
DATETIME bei MySQL unterstützt keine Zeitzonen. Was du das herumprobierst ist also komplett sinnlos.
Wenn du Zeitzonen in der Datenbank behandeln willst, solltest du am besten alles als UTC speichern und davon ausgehend umrechnen, oder verwende ein vernünftiges Datenbanksystem (also nicht MySQL), das auch richtig mit Zeitzonen umgehen kann.
Kommentar
Kommentar