Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP变量到MySQL的日期值为NULL_Php_Mysql_Joomla - Fatal编程技术网

从PHP变量到MySQL的日期值为NULL

从PHP变量到MySQL的日期值为NULL,php,mysql,joomla,Php,Mysql,Joomla,我在joomla工作,在未设置日期值时,无法存储空日期值而不是0000-00-00。 在MySql表中,日期字段设置为默认值NULL,并选中NULL复选框。 我尝试了我在这里找到的所有建议,但没有成功 这里是我的日期变量: if (isset($fbpage['endTime'])): $fbdataE = (new DateTime($fbpage['endTime']))->format('Y-m-d'); else : $fbdataE = NULL ; endif; 这里是我

我在joomla工作,在未设置日期值时,无法存储空日期值而不是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();
有什么建议吗


提前感谢。

感谢@PaulSpiege和@GabrielHeming给了我一个起点,我找到了一个解决方案

实际上,
->quote()
创建一个带引号的字符串
'
NULL
必须存储在MySql unquoted中,因此,对于像我一样对此感到困惑的人,以下是解决方案:

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数组中放入了变量

$values = array(
$db->quote($whateverelse),
$fbdataE,
$db->quote($whateverelse)
);

就这样

如果
->quote()
PDO::quote()
相同,则如果与NULL一起使用,将创建一个空的带引号字符串
'
。您最好了解如何在DB类中使用准备好的语句,因为当将
null
值强制转换为
字符串时,它将变为空值。但是对于SQL来说,它不应该是
字符串
<代码>更新。。。。column=null
(正确)不同于
更新。。。。column=“null”(不正确)