gpt4 book ai didi

php - 将时间值与数据库进行比较以停止重复条目

转载 作者:行者123 更新时间:2023-11-29 12:54:42 25 4
gpt4 key购买 nike

我正在将值插入数据库。

如果创建值的时间少于 24 小时,那么我会像这样插入,

$stmt = $con->prepare('
INSERT INTO taggedPlaces
(id, created_time, place_id, city, country, latitude, longitude, state, street, zip, name)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
');

foreach($graphObject['tagged_places']->data as $data) {
if (time() - strtotime($data->created_time) < 86400) {
$stmt->execute(array(
$data->id,
$data->created_time,
$data->place->id,
$data->place->location->city,
$data->place->location->country,
$data->place->location->latitude,
$data->place->location->longitude,
$data->place->location->state,
$data->place->location->street,
$data->place->location->zip,
$data->place->name
));
}
}

每次我返回该页面时,它都会采用相同的条目并将它们不断添加到数据库中。

我想说的是

if $data->created_time ==  any created_time value in the DB then don't add this value, 

as well as currently I am doing

if (time() - strtotime($data->created_time) < 86400)

确保时间不早于 24 小时。

如何添加此条件?

最佳答案

选项 1:(推荐)

id 设置为表的主键,taggedPlaces:

ALTER TABLE taggedPlaces ADD PRIMARY KEY(id)

然后更改插入语句以使用 INSERT IGNORE 这将跳过重复插入。

选项 2:

created_time 设为 taggedPlaces 中的唯一字段:

ALTER TABLE taggedPlaces ADD UNIQUE(created_time);

然后,再次使用 INSERT IGNORE 跳过重复项。

选项 3:(不推荐,但可行)

在运行插入之前,执行另一个查询以检查 $data->created_time 是否已在表中:

$check = $con->prepare('
SELECT id FROM taggedPlaces
WHERE created_time = ?
');

$check->execute(array($data->created_time));

if (count($check->fetchAll()) == 0) {
// No duplicates found. Proceed...
}

关于php - 将时间值与数据库进行比较以停止重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com