php - PDO bindParam 时间戳未插入

标签 php pdo

我有以下 PHP 代码,用于将 session 数据插入到名为 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 做错了什么吗?

最佳答案

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)';

关于php - PDO bindParam 时间戳未插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908042/

相关文章:

php - 无法让 PHP 执行 MySQL 查询

php - PDO,在我准备好的陈述中找不到问题

php - 出现 'Class PDO not found' 错误

PHP 在现有 XML 文件上添加子项和属性

php - WooCommerce:结帐页面中的帐户密码字段

php - 如何在 PHP 中使用 HTTP 身份验证,然后针对数据库运行输入的数据?

php - 如何使用 max(select field) 选择一行和另一行(特定字段)?

php - 严格标准 : Declaration should be compatible with PDO statement

PHP PDO 唯一随机数生成器

php - 动态产品列表页面php