需求:用户选择一个开始日期,输入一个时间间隔(以年为单位),程序计算出结束日期,将数据写入数据库
代码如下:
$fyear = $_post[‘fyear’]; //时间间隔
$date_start = $_post[‘stardate’]; //开始日期,为2016-03-21的格式
$date_start1 = date_create($date_start); //转化为日期类型数据,下面要用到。这是查了资料看的,不知道是不是需要这样
$date_end = date_add($date_start1,date_interval_create_from_date_string($fyear . ” years”));
//计算结束日期
$sql = “insert into 表名 (fyear,date_start,date_end) values (” . $fyear . “,'” . $date_start . “‘,'” . $date_end . “‘)”;
语名不能执行,显示错误意思是不能将datetime类数据转化为符串
新人不知如何修改,请指点
回复讨论(解决方案)
贴出错误信息以供分析
错误提示为
catchable fatal error: object of class datetime could not be converted to string
错误行数就是这条sql语句,在程序中语句未执行,就是说构建这条sql语句是就出错了
好像是说日期类的实例不能转换为字符串,猜测是实例不能和字符串连在一起
但不知怎么修改
请指点
会不会是数据库字段类型有问题?
楼上,在程序 中没有执行sql语句,只是先写出了sql语句,所以应该和数据库没有什么关系
$_post[‘stardate’]; 这个是什么样子的?
直接弄成string 就可以存啊
或者转成规定的日期型date(“y-m-d”,$str), 在数据库里选date类型
楼上
$_post[‘stardate’] 这个是在提交页用了一个日期控件,选择后在输入框自动显示日期,是2016-03-03这样的格式
把这个弄成日期类型主要是为了计算加一个时间间隔后的结束日期,用到了date_add这个函数
date_add这个函数好像是要求用到日期型参数
借鉴一下这个,,你的 $date_end 打印一下看看是什么结果 应该是date_time对象