2016-07-31 10 views
1

私は今日mysqlをアップグレードしました。私のクラスのほとんどの私の 'add'関数はエラーになりました。ここでMysql 5.7.11 - PHPクラスの空の日付を管理する方法

は私のPHPクラスの一つのexempleです:私のmysqlの更新前に

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)); 
    } 
} 

$date_ploufが空だった場合、要求されました:

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

そして、それが正常に動作しました。もうそうじゃない。

不正な日付値:今、私はエラーを持っている '

だから、私はsql_modeのグローバル変数を変更しようとしました'。

私は変更のための:

STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER 

STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER 

をしかし、それは何も変更されていません。

このdatetimeフィールドのデフォルト値を0000-00-00 00:00:00のDBに入れようとしましたが、どちらも機能しません。

解決方法私は私のすべての日付の値を0000-00-00 00:00:00私のPHPクラスに設定することがわかった。しかし、これは私がすべてのクラスを変更する必要があることを意味します。

これに関するアドバイスはありますか?

答えて

0

おそらく、date_ploufが設定されているかどうかを確認し、デフォルト値を入力しない場合は、

$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

はい、これは私が考えていたものです。しかし、これは私がすべてのクラスを修正するように強制します。私は、mysql 5.7を設定して日付を= ''に設定する方法があるかもしれないと考えていました。 –

関連する問題