2016-07-31 4 views
1

verwalten Ich habe Mysql heute aktualisiert und die meisten meiner Add-Funktion in meinen Klassen sind jetzt fehlerhaft.Mysql 5.7.11 - Wie man leere Daten in PHP-Klasse

Hier ein exemple eines meiner PHP-Klasse ist:

class A 
{ 
    private $date_plouf;  

    ...  

    public function add() 
    { 
     $db = databaseManager::getDb();   
     $requete = "INSERT INTO table_A (date_plouf) VALUES (:date_plouf)"; 
     $stmt = $db->prepare($requete); 
     $result = $stmt->execute(array('date_plouf'=>$this->date_plouf)); 
    } 
} 

Vor meinem mysql-Update, wenn $date_plouf leer war, war die Anfrage:

INSERT INTO table_A (date_plouf) VALUES (''); 

Und das funktioniert gut. Aber nicht mehr. Jetzt habe ich einen Fehler:

Falschen Datumswert: ''

Also habe ich versucht, sql_mode globalen Variable zu ändern.

I geändert:

STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER 

für:

STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER 

Aber es ist nicht etwas zu ändern.

Ich habe versucht, den Standardwert dieses Datetime-Feld in DB für 0000-00-00 00:00:00 setzen, aber es funktioniert auch nicht.

Die Lösung ich fand ich alle meine Daten Wert auf 0000-00-00 00:00:00 in meiner PHP-Klasse zu setzen. Aber das bedeutet, dass ich alle meine Klassen wechseln muss.

Irgendwelche Ratschläge dazu?

Antwort

0

Vielleicht können Sie einfach überprüfen, ob date_plouf gesetzt ist und wenn nicht einen Standardwert eingeben?

$varDate = !empty($this->date_plouf) ? $this->date_plouf : '0000-00-00 00:00:00'; 

$db = databaseManager::getDb();   
$requete = "INSERT INTO table_A (date_plouf) VALUES (:date_plouf)"; 
$stmt = $db->prepare($requete); 
$result = $stmt->execute(array('date_plouf'=>$varDate)); 
+0

Ja, das habe ich mir gedacht. Aber das wird mich zwingen, alle meine Klassen zu korrigieren. Ich dachte, dass es vielleicht eine Möglichkeit gibt, mysql 5.7 so zu konfigurieren, dass man ein Datum mit = '' setzt. –

Verwandte Themen