gpt4 book ai didi

php - 从 PHP 变量到 MySQL 的 NULL 日期值

转载 作者:行者123 更新时间:2023-11-29 19:04:47 24 4
gpt4 key购买 nike

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

有什么建议吗?

提前致谢。

最佳答案

感谢@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)
);

就是这样!

关于php - 从 PHP 变量到 MySQL 的 NULL 日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43594934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com