我试图将DatTime对象保存在MySQL DB中。在插入时,我有此错误:
“使用参数执行'INSERT INTO事件(name_event,desc_event,minimatePrice_event,startDate_event,endDate_event,startHour_event,endHour_event,num_ET)VALUES(?,?,?,?,?,?,?,?,?)'时发生异常[” rfreger“,” gregregerg“,44,{” date“:” 2011-01-01 00:00:00“,” timezone_type“:3,” timezone“:”欧洲/巴黎“},false,false,false, 2]:可捕获的致命错误:DateTime类的对象无法转换为字符串”
我不明白为什么该方法尝试将DateTime对象转换为String
如何解决这个问题?
public function save(Event $event) {
$eventData = array(
'name_event' => $event->getName(),
'desc_event' => $event->getDesc(),
'minimalPrice_event' => $event->getMinimalPrice(),
'startDate_event' => $event->getStartDate(),
'endDate_event' => $event->getEndDate(),
'startHour_event' => $event->getStartHour(),
'endHour_event' => $event->getEndHour(),
'num_ET' => $event->getType()
);
if ($event->getNum()) {
// The event has already been saved : update it
$this->getDb()->update('event', $eventData, array('num_event' => $event->getNum()));
} else {
// The event has never been saved : insert it
$this->getDb()->insert('event', $eventData);
// Get the id of the newly created event and set it on the entity.
$id = $this->getDb()->lastInsertId();
$event->setNum($id);
}
}
使用MySQL,首先创建一个称为SQL语句的字符串,然后将其发送到数据库以执行。您的代码创建的SQL语句类似于以下内容:
INSERT INTO event (name_event, desc_event, minimalPrice_event, startDate_event, endDate_event, startHour_event, endHour_event, num_ET) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
在php中,您可以将字符串连接在一起以创建更长的字符串,如下所示:
$stringFinal = $stringA."other string".$stringB.$number4;
您甚至可以在其中添加数字。但是,有些数据类型不会转换为字符串。数组是一个很好的例子。如果您具有以下数组:
$myArray = array (
[0] => 4,
[44] => 'hello'
)
并且如果您尝试使用以下代码创建字符串:
$myString = "hello".$myArray;
运行脚本的服务器将完全混乱,因为它并非旨在将数组转换为字符串。
因此,请回答您的疑问:
我不明白为什么该方法尝试将DateTime对象转换为String
它必须是一个字符串,因为这是您首次查询SQL命令时数据库读取的格式。
出现错误的原因是因为您要传递的代码中有一个变量(或多个变量)要被插入到数据库中,而不能转换为字符串。
希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句