我在joomla工作并且在没有设置时存在存储NULL日期值而不是0000-00-00的问题。 在MySql表中,日期字段设置为默认值NULL,并选中null复选框。 我尝试了我在这里找到的所有建议,但没有运气。
这里是日期的变量:
if (isset($fbpage['endTime'])):
$fbdataE = (new DateTime($fbpage['endTime']))->format('Y-m-d');
else : $fbdataE = NULL ; endif;
这里是我存储在MySql中的代码
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$columns = array(
'whateverelse',
'enddates',
'whateverelse'
);
$values = array(
$db->quote($whateverelse),
$db->quote($fbdataE),
$db->quote($whateverelse)
);
$query
->insert($db->quoteName('#__table'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->execute();
有什么建议吗?
提前感谢。
答案 0 :(得分:0)
感谢@PaulSpiege和给我一个起点的@GabrielHeming,我找到了解决方案。
实际上->quote()
创建一个带引号的字符串' '
并且NULL
必须在MySql中不加引号存储,因此,对于那些感觉迷失的人,就像我一样,这里是解决方案:
1)我在日期条件中将NULL更改为带引号的字符串'NULL'
if (isset($fbpage['endTime'])):
$fbdataE = (new DateTime($fbpage['endTime']))->format('Y-m-d');
else : $fbdataE = 'NULL' ; endif;
2)如果是有效日期,我添加了一个新的引用条件,如果不是
则添加引号if($fbdataE !='NULL'):
$fbdataE = $db->quote($fbdataE);
else:
$fbdataE = $db->escape($fbdataE);
endif;
3)当然,我只将值变量放在值数组
中$values = array(
$db->quote($whateverelse),
$fbdataE,
$db->quote($whateverelse)
);
那就是它!