从PHP变量到MySQL的{NULL}值

时间:2017-04-24 18:06:40

标签: php mysql joomla

我在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();

有什么建议吗?

提前感谢。

1 个答案:

答案 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)
);

那就是它!