PDO временная метка bindParam не вставлена - PullRequest
2 голосов
/ 26 октября 2011

У меня следующий PHP-код для вставки данных сеанса в таблицу с именем ds_session:

    // 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 не установлены.Определение таблицы выглядит следующим образом:

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?

1 Ответ

3 голосов
/ 26 октября 2011

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)';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...