我今天升级了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
。但这意味着我将不得不改变我的所有课程。
有关于此的任何建议吗?
答案 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));