【问题标题】:PHP PDO SQLite3 converting date stringPHP PDO SQLite3 转换日期字符串
【发布时间】:2012-10-23 20:03:06
【问题描述】:

仅在本地主机上使用 SQLite3、PDO 和 PHP5。

我正在使用网页表来显示列、样本集(表中的 1 条记录)、用于选择列的复选框以及用于为后续查询选择修改器的下拉列表。 在点击“获取查询”按钮时,简单查询..

SELECT day FROM tbl;

..变成..

SELECT datetime([day],'unixepoch','+978307200 seconds','localtime') as day FROM tbl;

(这是通过字符串替换功能完成的)

然后通过 cookie 将其传递到结果页面(使用 cookie,因为我还传递了许多其他数据)

此查询现在会将所有这些秒数添加到转换后的 unix 纪元时间,并放弃本地时间的结果...(vs UTC)

如果我将查询直接硬编码到“results.php”页面中,它可以正常工作。如果该页面使用存储在前一页设置的 cookie 中的查询,我将得不到任何结果。检查结果页面元素,我可以看到 cookie 已设置完整的查询。

我已将其缩小到 "+978307200" 修改器...因为没有它,它工作正常(除了 978307200 秒不平衡!)

我认为“+”号出现了问题,但完全不知道如何修复它。

有什么想法/建议吗? 谢谢。

【问题讨论】:

    标签: php sqlite pdo


    【解决方案1】:

    在 URL 和 cookie 中,加上 sing 是空格的占位符,$_COOKIES 数组包含已解析的 cookie 标头,因此每个加号都更改为空格。

    如果你真的必须在页面之间传递这种数据,请使用 session 。

    如果由于某种原因无法选择会话,则您必须将值编码为仅包含“安全”字符,然后再将它们存储到 cookie 中,然后在使用前对其进行解码。最受欢迎的是base64_函数

    【讨论】:

    • 传奇!!...不知道 cookie 和 + 号。我更简单的解决方法是在我设置 cookie 时放入一个占位符(“#”),并在我在另一端得到它时放入 str_replace。也感谢您的快速回复。惊人的。总是这样……像那样的微小的东西会引起如此多的悲伤。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多