2011-10-26 7 views
2

が挿入されていない私はds_sessionと呼ばれるテーブルにセッションデータを挿入するためのPHPコードを次ていますPDO bindParamタイムスタンプが

// session does not exists create insert statement 
    $insertSQL = 'INSERT INTO ds_session (session_id, user_agent, session_expire, date_created, session_data) 
       VALUES (:SESSION_ID, :USER_AGENT, :SESSION_EXPIRE, :DATE_CREATED, :SESSION_DATA)'; 

    $insertStmt = $this->pdo->prepare($insertSQL); 
    $insertStmt->bindParam(':SESSION_ID', $id); 
    $insertStmt->bindParam(':USER_AGENT', $_SERVER['HTTP_USER_AGENT']); 
    $insertStmt->bindParam(':SESSION_EXPIRE', $time); 
    $insertStmt->bindParam(':DATE_CREATED', time()); 
    $insertStmt->bindParam(':SESSION_DATA', $sessData); 
    $insertResult = $insertStmt->execute(); 

ここに私の問題はSESSION_EXPIREとDATE_CREATEDが設定されていないparamsはということ、です。 テーブル定義は次のようになります。

CREATE TABLE `ds_session` (
    `session_id` varchar(32) NOT NULL default '', 
    `user_agent` varchar(255) NOT NULL default '', 
    `session_expire` datetime NOT NULL, 
    `date_created` datetime NOT NULL, 
    `session_data` longtext, 
PRIMARY KEY (`session_id`), 
KEY `session_expire` (`session_expire`) 
) ENGINE=MyISAM 

ここでの問題は何ですか? PDOStatementに何か問題がありますか?

+0

これらの変数を 'var_dump()'するとどうなりますか? –

答えて

3

datetime値は数字ではなく文字列として期待されます。 FROM_UNIXTIMEを使用して変換:

$insertSQL = 'INSERT INTO ds_session (session_id, user_agent, session_expire, 
        date_created, session_data) 
      VALUES (:SESSION_ID, :USER_AGENT, FROM_UNIXTIME(:SESSION_EXPIRE), 
        FROM_UNIXTIME(:DATE_CREATED), :SESSION_DATA)'; 
+0

多くの感謝!私は1時間以上問題を探して、メルトダウンに近づいていた;) –

+0

TIMESTAMP :) – Bigood

関連する問題