2016-07-24 7 views
0

ich einen versteckten Eingang hat, wo sein sollte das aktuelle Datum an seinen jeweiligen Ort in der Datenbank senden:Datum wird nicht in meiner DB geschrieben

<input type="hidden" name="DATE" value="<?php echo date("Y/m/d"); ?> /> 

Wie wir alle wissen, die Datum() Funktion gibt die Server Datum und nicht die der Benutzer, so änderte ich die Zeitzone:

<?php date_default_timezone_set('America/Mexico_City'); 
$MexDate = date("Y/m/d"); ?> 

Dann habe ich den Wert des verborgenen Eingangs verändert, damit ich weiß, könnte das aktuelle Datum nach Mexiko Zeitzone senden.

<input type="hidden" name="DATE" value="<?php echo $MexDate; ?>" /> 

Das Problem hier ist, dass nicht das Schreiben des Datums, schreibt es nichts (0000-00-00). Das passierte nicht, wenn ich nur date() benutzte, ohne die Zeitzone zu ändern. Was ist hier passiert?

+0

das Datum in PHP ändern, wird nach wie vor der Client Datetime nicht geben - um den versteckten Eingang mit Hilfe von Javascript aktualisieren konnte, obwohl, wenn Sie waren Nach dem Datum/der Uhrzeit für den Benutzer – RamRaider

+0

Sie haben sql_mode in mysql conf festgelegt, so dass Sie keine Nulldaten einfügen können. Wahrscheinlich möchten Sie nicht, dass die Einfügung im Hintergrund fehlschlägt und dass nach einigen Tagen Daten beschädigt sind. Sie können dies mit sql_mode = 'NO_ZERO_IN_DATE, NO_ZERO_DATE' einstellen. Es gibt einige andere Optionen, die Sie ernsthaft in Erwägung ziehen sollten: http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html –

Antwort

0

Vielleicht, weil Sie nicht das richtige Format angegeben haben. Ich würde vorschlagen, dass Sie das Format als angeben Y-m-d anstelle von Y/m/d

$MexDate = date("Y-m-d"); 

Auch wäre eine andere Art und Weise NOW mit mysql werden() Funktion. Es wird das aktuelle Datum in die Datenbank einfügen.

+0

Vergessen zu erwähnen, dass ich das schon getan habe. Gibt NOW() das Datum oder den Server des Benutzers zurück? –

+0

Bitte zeigen Sie Ihre mysql einfügen Code. –

+0

'$ insertSQL = sprintf (" EINFÜGEN IN CCM (NJuzgado, Sec, Expendiente, Schauspieler, Demandado, CLIENTFLAG, Link, Flagge, DATE) WERTE (% s,% s,% s,% s,% s,% s, % s,% s, Datum) ",' –

0

Sobald Sie die TimeZone durch php ändern. Wenn Sie auf diesen Link überprüfen http://dev.mysql.com/doc/refman/5.5/en//time-zone-support.html es sagt

Per-connection time zones. Each client that connects has its own time zone setting, given by the session time_zone variable. Initially, the session variable takes its value from the global time_zone variable, but the client can change its own time zone with this statement: 

Deshalb müssen Sie die gleiche Zeitzone in mysql gesetzt auch, und das kann durch diesen Befehl erfolgen. Angenommen, $ db ist Ihr mysql Objekt dann verwenden

$now = new DateTime(); 
$mins = $now->getOffset()/60; 
$sgn = ($mins < 0 ? -1 : 1); 
$mins = abs($mins); 
$hrs = floor($mins/60); 
$mins -= $hrs * 60; 
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins); 
$db->query("SET time_zone = '$offset'"); 

Dieses erhielt von https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/

Verwandte Themen