Mysql 5.7.11 - 如何在php类

时间:2016-07-31 08:22:33

标签: php mysql

我今天升级了mysql,而且我的大部分内容都添加了'我的课程中的函数现在出错了。

以下是我的一个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

for:

STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER

但它没有改变任何东西。

我尝试将此日期时间字段的默认值放在0000-00-00 00:00:00的数据库中,但它不能正常工作。

解决方法我发现我在php类中将所有日期值设置为0000-00-00 00:00:00。但这意味着我将不得不改变我的所有课程。

有关于此的任何建议吗?

1 个答案:

答案 0 :(得分: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));