gpt4 book ai didi

php - 使用 php 将空日期/时间插入 mysql 导致 0000-00-00/00 :00:00

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

我在这里和其他地方看到了一些在某些情况下解决这个问题的问题,但不完全是我需要的。

我正在使用一个存储值数组的脚本,以根据更改进行插入或更新。

有些日期/时间已设置,有些则为空。我正在尝试使用 $var=NULL ,然后插入 insert into ... ('{$var}') 并获取 00:00:00 的时间(如果为空)和时间(如果设置了时间)。

使用 $var="NULL"插入并插入 ... ('{$var}') ,如果为 null 则获取 00:00:00 ,如果设置了时间则获取时间。

如果我删除插入... ({$var}) 的引号,如果为空,它会起作用,但如果日期不为空,它当然会失败。

我有另一个 VARCHAR 字段,我正在用它做同样的事情,它工作得很好。即,如果有一个字符串,它会作为字符串传入,如果它是空的,我将设置 var=null。我在插入查询上使用引号,如果它为空,则它作为空输入,如果不为空,则插入字符串。

使用条件语句将需要相当大的重写,所以我希望避免这种情况。

任何关于如何在没有 IF 语句的情况下完成这项工作的建议(如果可能的话)都会有所帮助。

谢谢。


我已经通过多种方式对此进行了测试,如果不将日期/时间字段设置为 VARCHAR,我将无法获得所需的结果,而我不想这样做。这是数据库结构、插入查询和结果。

id  int(11)         No  None    AUTO_INCREMENT                          
event_new_date_start date Yes NULL
event_new_time_start time Yes NULL
event_link varchar(150) latin1_swedish_ci Yes NULL




$event_new_date_start1 = 'NULL';
$event_new_time_start1 = 'NULL';
$event_link1 = 'NULL';
$event_new_date_start2 = '2011-04-04';
$event_new_time_start2 = '13:13';
$event_link2 = 'http://abc.com';
$event_new_date_start3 = NULL;
$event_new_time_start3 = NULL;
$event_link3 = NULL;

mysql_query("
insert into test_dates (event_new_date_start, event_new_time_start, event_link) values
('{$event_new_date_start1}', '{$event_new_time_start1}', '{$event_link1}')
");

mysql_query("
insert into test_dates (event_new_date_start, event_new_time_start, event_link) values
('{$event_new_date_start2}', '{$event_new_time_start2}', '{$event_link2}')
");

mysql_query("
insert into test_dates (event_new_date_start, event_new_time_start, event_link) values
('{$event_new_date_start3}', '{$event_new_time_start3}', '{$event_link3}')
");


1 0000-00-00 00:00:00 NULL
2 2011-04-04 13:13:00 http://abc.com
3 0000-00-00 00:00:00

当我将日期/时间字段更改为 CHAR 时,它在查询中使用引号按预期工作。

        4   NULL    NULL    NULL
5 2011-04-04 13:13 http://abc.com
6

最佳答案

如果您使用引号,则表示您希望日期为字符串'NULL'。 MySQL 无法将其解析为有效日期,因此它会回退到 0

设置 $var 的值时,将其设置为 NULL 或带引号的字符串(如果它不为空),然后只需使用 ({$var }) 在查询中而不是 ('{$var}')

关于php - 使用 php 将空日期/时间插入 mysql 导致 0000-00-00/00 :00:00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085488/

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