插入日期却是000-00-00 :00:00:00,这个问题一直无法解决。

#1 jaykon

我用speedphp做了一个内部系统,最近发现一个问题,至今无法解决,也不知什么问题,
有两个日期的字段,有时候插入数据库后的值就变成“000-00-00 :00:00:00”,但也不一定都是这样,一时一时,反正整个过程也没有报错,所以难以找到问题所在,因此我在程序上将数据传输过程做了下Log,希望大Jake帮我分析分析。

首先,我对接受到的所有数据记录,如下(logs是我自己写的记录方式:

logs("projectAdd.txt",json_encode($this->spArgs()));

得到记录如下:
{"c":"project","a":"project_add_do","proj_name":"62105c3159278d5b","prod_id":"1","wrap_id":"0","proj_class":"2","proj_url":"http:\/\/xyq.163.com\/2011\/cjs\/","proj_psdUrl":"\\\\192.168.22.64\\xyq\\","proj_ps":"68a65e7b897f6e3862105c3159278d5b6d3b52a84e139898","pnod_name1":"1","user_id_n1":"0","pnod_time_s1":"","pnod_time_e1":"","pnod_name2":"2","user_id_n2":"0","pnod_time_s2":"","pnod_time_e2":"","pnod_name3":"3","user_id_n3":"0","pnod_time_s3":"","pnod_time_e3":"","pnod_name4":"4","user_id_n4":"0","pnod_time_s4":"","pnod_time_e4":"","proj_start":"2011-09-21","proj_startTime":"01:00:00","proj_end":"2011-09-30","proj_endTime":"01:00:00","nodecount":"4","projState":"50","input":"4fdd5b5883497a3f"}


然后我取其中一些数据进行拼装成project_row
                $project_row=array(
                                          'proj_name'=>$this->spArgs('proj_name'),
                                          'proj_mail'=>$this->spArgs('proj_mail'),
                                          'wrap_id'=>$this->spArgs('wrap_id'),
                                          'prod_id'=>$prod_id,
                                          'proj_date'=>date("Y-m-d H:i:s"),
                                          'proj_ps'=>$this->spArgs('proj_ps'),
                                          'proj_url'=>$this->spArgs('proj_url'),
                                          'proj_psdUrl'=>$this->spArgs('proj_psdUrl'),
                                          'proj_class'=>$this->spArgs('proj_class'),
                                          'proj_state'=>$proj_state,
                                          'proj_start'=>$this->spArgs('proj_start')." ".$this->spArgs('proj_startTime'),
                                          'proj_end'=>$this->spArgs('proj_end')." ".$this->spArgs('proj_endTime'),
                                          'user_id'=>$user_id
                                           );

logs("projectAdd.txt",json_encode($project_row)."\r\n");

得到数据如下:

{"proj_name":"62105c3159278d5b","proj_mail":null,"wrap_id":"0","prod_id":"1","proj_date":"2011-09-09 20:22:18","proj_ps":"68a65e7b897f6e3862105c3159278d5b6d3b52a84e139898","proj_url":"http:\/\/xyq.163.com\/2011\/cjs\/","proj_psdUrl":"\\\\192.168.22.64\\xyq\\","proj_class":"2","proj_state":"50","proj_start":"2011-09-21 01:00:00","proj_end":"2011-09-30 01:00:00","user_id":"18"}
$project->create($project_row);



记录最后执行的sql:
logs("projectAdd.txt",$project->dumpSql()."\r\n\r\n");
INSERT INTO project (proj_name,proj_mail,wrap_id,prod_id,proj_date,proj_ps,proj_url,proj_psdUrl,proj_class,proj_state,proj_start,proj_end,user_id) VALUES ('成就大赛',NULL,'0','1','2011-09-09 20:22:18','成就大赛活动专题','http://xyq.163.com/2011/cjs/','\\\\192.168.22.64\\xyq\\','2','50','2011-09-21 01:00:00','2011-09-30 01:00:00','18')
连这段sql都没问题,但插入后 proj_start 和 proj_end 的值就变成“000-00-00 :00:00:00”, 我在phpmyadmin里直接执行这句mysql是没问题的。

$project->findSql(这句sql)会报错,应该是'\\\\192.168.22.64\\xyq\\'这个数据的转义问题。但为什么上面整个过程就不报错呢?而且还顺利返回了增加行后的id值。

我按照这个数据格式自己提交一次,却是正常的,我就无法理解了。

我现在确实找不到原因了....不知大家找不找到问题?

2011-09-09 21:11:57

#2 jake

看不出什么原因,

不过后面两个时间字段和前面一个插入的时候的区别是后面的小时数有个前导0,我也不清楚会否有影响。另外可以考虑用时间戳来存时间。

2011-09-09 21:41:06

#3 chillm

兄弟,用时间戳吧。o(︶︿︶)o 唉

2011-09-13 12:40:02

#4 jaykon

我错了,那个日期置0问题原不是在插入过程中造成的,而是插入之后的一些操作造成的。

麻烦了大家了:(

2011-09-16 16:55:09

#5 jaykon

我错了,那个日期置0问题原不是在插入过程中造成的,而是插入之后的一些操作造成的。

麻烦了大家了:(

2011-09-16 16:55:18