2016-04-23 5 views
2

MySQL DatetimeオブジェクトをMySQL DBに保存しようとしています。 ????挿入時に、私はこのエラーを持っている:、(、、、(name_event、desc_event、minimalPrice_event、startDate_event、endDate_event、startHour_event、endHour_event、num_ET)VALUESイベント。INSERT INTO」を実行しながら、DBAL:データベースにDateTimeを保存

」例外が発生しましたか? 44、{"date": "2011-01-01 00:00:00"、 "timezone_type":3、 "timezone": "、"、 "キャッチ可能な致命的なエラー:DateTimeクラスのオブジェクトを文字列に変換できませんでした。

このメソッドがDateTimeオブジェクトを文字列

この問題を解決するにはどうすればよいですか?

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); 
    } 
} 
+0

クエリを実行しているコードを投稿してください – Webeng

+0

$ this-> getDb() - > insert( 'イベント'、$ eventData); – YoannLth

+0

$ SQL文はどこに作成されましたか?質問に投稿した大きなエラーにはSQL文が含まれており、エラーを推測するためにその文にバインドしようとしている値を確認する必要があります。ですから、(?、?、?.....)疑問符にパラメータをバインドする関数を見つけることができれば、そのコードはここで非常に役に立ちます – Webeng

答えて

2

MySQLでは、SQL文と呼ばれる文字列が最初に作成され、実行されるデータベースに送信されます。そのように長い文字列を作成するには、PHPで

INSERT INTO event (name_event, desc_event, minimalPrice_event, startDate_event, endDate_event, startHour_event, endHour_event, num_ET) VALUES (?, ?, ?, ?, ?, ?, ?, ?) 

、あなたが一緒に文字列に参加することができます:あなたのコードが作成されたSQL文は、の線に沿って何かだった

$stringFinal = $stringA."other string".$stringB.$number4; 

そして、あなたも追加することができますそこの数字。ただし、文字列に変換されないDataTypesもあります。配列は完全な例です。あなたは次の配列がある場合:

$myArray = array (
    [0] => 4, 
    [44] => 'hello' 
) 

をして、次のコードで文字列を作ってみました場合:

$myString = "hello".$myArray; 

それが変換するように設計されていなかったため、スクリプトを実行しているサーバーは完全に混乱してしまいます文字列への配列

は、だからあなたの疑問に答える:

I don't understand why the method try to convert the DateTime object to a String

それはそれはあなたが最初にあなたのSQLコマンドを照会するとき、データベースが読み込み形式であるため、文字列にする必要があります。

また、文字列に変換できないデータベースにINSERTEDするコードに渡す変数(または複数の変数)があるため、エラーが発生した理由があります。

私はそれが助けてくれることを願っています!

+0

ありがとうWebeng。あなたの説明は本当に完璧です。だから、私はDateTimeオブジェクトを格納する方法を変更しました。今それは動作します、ありがとう;) – YoannLth

+0

@KyleCoupart問題はありません、いつでも:) – Webeng

関連する問題