Jaz*_*zzy 2 php mysql string null datetime
我在这里和其他地方看到了一些问题,在某些情况下会解决这个问题,但不是我需要的问题.
我正在使用一个脚本,该脚本存储一组值,以根据更改执行插入或更新.
设置了一些日期/时间,有些日期/时间为空.我正在尝试使用$ var = NULL,然后使用insert插入...('{$ var}')并获得00:00:00的时间(如果为null)和时间(如果设置了时间).
插入$ var ="NULL"并插入...('{$ var}')并获得00:00:00(如果为null)和时间(如果设置了时间).
如果我删除插入的引号...({$ var})它的作用是null,但是如果日期不是null,它当然会失败.
我有另一个VARCHAR字段我正在做同样的事情,它工作正常.即如果有一个字符串,它作为一个字符串传入,如果它是空的,我设置var = null.我在插入查询上使用引号,如果它为null,则为null,如果不为null,则插入字符串.
使用条件语句将需要相当大的重写,所以我希望避免这种情况.
关于如何在没有IF语句(如果可能)的情况下完成这项工作的任何建议都会有所帮助.
谢谢.
我已经测试了这几种方式,如果没有制作日期/时间字段VARCHAR,我无法获得所需的结果,我不想这样做.这是db结构,插入查询和结果.
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
Run Code Online (Sandbox Code Playgroud)
当我将日期/时间字段更改为CHAR时,它使用查询中的引号按预期工作.
4 NULL NULL NULL
5 2011-04-04 13:13 http://abc.com
6
Run Code Online (Sandbox Code Playgroud)
如果你正在使用引号,那么你说你希望日期是字符串'NULL'.MySQL无法将其解析为有效日期,因此它会回退到0.
设置值时$var,将其设置为just NULL或带引号的字符串(如果它不为null),则只需({$var})在查询中使用而不是('{$var}').