【问题标题】:saving JSON response based on timestamp to database将基于时间戳的 JSON 响应保存到数据库
【发布时间】:2012-07-05 20:12:20
【问题描述】:

通过 API,我得到以下 JSON 响应,

status: "550",
created: "2012-07-02 19:00:58",
reason: "550 #5.1.0 Address rejected. ",
email: "somemail@dummy.org"

我希望将此响应保存到数据库中,

每次填充数据库时,我都需要“创建”字段,它实际上是一个时间戳,是唯一的,我要编写的脚本基本上是一个 cron 作业,所以我不想多次添加相同的记录数据库,

如何根据时间戳填充数据库?

另外,我如何提取从

中提取的反弹代码
reason: "550 #5.1.0 Address rejected. ",

这里是跳出代码

5.1.0

请指导我,

【问题讨论】:

  • 您的问题没有显示任何研究或努力
  • 我对如何在添加记录之前匹配时间戳感到困惑
  • 我要的是指导方针,而不是代码,请给我一些指导方针,我会尝试,只是一些出路,只是一些提示,从

标签: php mysql sql regex json


【解决方案1】:

1 - 避免重复条目

使列唯一 - 将UNIQUE index 添加到时间戳列,这样如果您尝试再次插入相同的列,数据库服务器就会报错。

CREATE UNIQUE INDEX name_of_index ON tablename (created);

在此之后,您可以INSERT IGNORE INTOREPLACE INTO 表,它将失败或更新现有行。

检查值是否存在 - 您可以在插入任何内容之前执行查询,检查时间戳是否存在。

SELECT count(created) FROM tablename WHERE created = '2012-07-02 19:00:58';

如果结果是> 0,则您知道您已经有一行带有该时间戳,因此您不要插入。如果没有其他人在您的查询和插入语句之间在该数据库中放置任何内容,这是安全的。

始终删除和插入 - 第三种方法是预防性地删除具有该时间戳的所有行,然后插入一行。

DELETE FROM tablename WHERE created = '2012-07-02 19:00:58';
INSERT INTO tablename [...];

但由于我并没有真正了解您在此处尝试做什么,因此您需要编辑您的问题并更加具体。

2 - 提取弹跳代码

取决于这些原因可能是什么样子。如果可以安全地假设没有其他#,您可以通过# 和后面的第一个space 之间的extracting the string 获取代码。这里不需要正则表达式。或者干脆参考André Catita's answer

【讨论】:

  • 投票赞成您的答案以进行解释。
【解决方案2】:

要获取退回代码,请使用正则表达式。 简单的方法是:

$string = 'asdsa#5.3.1 A';
preg_match('/#(.+) /is', $string, $match);
echo $match[1]; // match[1] will be '5.1.0'

我假设您想将“创建”变量转换为时间戳? 只需使用 strtotime,因为您收到的日期是该函数的有效复合格式,它将正常工作,如下所示。

$created = '2012-07-02 19:00:58';
$timestamp = strtotime($created);

这样您可以将日期转换为时间戳,然后只需确保时间戳的列是唯一的。

【讨论】:

  • 谢谢......还有一件事,我如何在用新记录更新表格之前匹配表格的时间戳......我不想多次拥有相同的记录,虽然 Wolfram 给出了一些提示,但我是仍然没有得到这一切,,,
  • 如果您需要检查,只需执行以下操作:`SELECT COUNT(id) FROM table WHERE timestamp=?^(其中 ? 代表 PHP 中的时间戳变量)。或者只是使列时间戳唯一(除非您在同一秒和同一时间收到多个结果),所以它不会被多次添加。在您的列中查找 UNIQUE,如果您使用的是 PHPMYAdmin,请检查列的选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
相关资源
最近更新 更多