2016-07-31 41 views
1

我今天升級了mysql,現在我的類中的大多數'add'函數都出錯了。Mysql 5.7.11 - 如何在php類中管理空日期

這是我的PHP類之一的爲例:

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

我的MySQL更新之前,如果$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 

但它沒有改變任何東西。

我試圖把這個日期時間字段的默認值在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來接受用=''設置日期。 –