【发布时间】:2011-08-30 10:33:17
【问题描述】:
我在这里和其他地方看到几个问题在某些情况下解决了这个问题,但不是我需要的。
我正在使用一个脚本,该脚本存储一组值以根据更改进行插入或更新。
设置了一些日期/时间,而一些日期/时间为空。我正在尝试使用 $var=NULL,然后使用 insert into ... ('{$var}') 插入,如果为 null,则获取时间为 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
【问题讨论】:
标签: php mysql string datetime null