php - 我想在添加新的 10 行条目时检查我的数据库,限制 24 小时不重复。我如何通过Php和MySql来实现它?

标签 php mysql

我有一个数据库,在将 10 行添加到一起时,我希望在 24 小时限制内避免重复任何数据(例如通过电话号码)。我现在也已经保存了到达时间功能,但我想知道如何实现它?

<?php

if (($getdata = fopen($target_file, "r")) !== FALSE) {
    fgetcsv($getdata);
    while (($data = fgetcsv($getdata)) !== FALSE) {
        $fieldCount = count($data);
        for ($c = 0; $c < $fieldCount; $c++) {
            $columnData[$c] = $data[$c];
        }
        $mobile        = mysqli_real_escape_string($connect, $columnData[0]);
        $value         = mysqli_real_escape_string($connect, $columnData[1]);
        $import_data[] = "('" . $mobile . "','" . $value . "',NOW())";
    }
    $import_data = implode(",", $import_data);
    $query       = "INSERT INTO master(name,value,whenadded) VALUES         $import_data ;";
    $result      = mysqli_query($connect, $query);
    $message .= "Data imported successfully.";
    fclose($getdata);
}
?>

最佳答案

虽然示例代码不太清楚。我认为主要问题是防止在 24 小时内添加重复的列。

执行此操作的步骤如下:

  1. 应该有一个DATETIME列来跟踪数据库中记录的创建日期。它可能具有默认值CURRENT_TIMESTAMP。我们假设名为 CREATED
  2. 在插入数据之前,请务必使用以下 SQL 检查 24 小时内是否存在重复数据:

请注意,您可以放置​​任何需要唯一的列。

 SELECT COUNT(*) AS CONT 
 FROM MY_TABLE 
 WHERE TIMESTAMPDIFF(HOUR,CREATED,NOW())<=24 AND (PHONE = ? OR EMAIL=? OR NAME=? ......)

如果查询返回任何大于 0 的数字,那么您应该向用户返回错误。

更新 根据下面提问者评论中的要求,请检查此 question about removing duplicate entries keeping only one

关于php - 我想在添加新的 10 行条目时检查我的数据库,限制 24 小时不重复。我如何通过Php和MySql来实现它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431098/

相关文章:

php - 使用 PHP 从 MySQL 列中删除重复的逗号分隔值

php - CI中如何将多维数组插入数据库?

php - 维护用户列表 - MySQL/PHP

php - 用保留字命名列有问题吗?

php - 获取 Laravel 数据库连接以处理单个 PHP 脚本

mysql - 将字符串值附加到 mysql 中现有的 json 值

php - 为什么mysql不使用for循环插入10行?

php - 如何使用 htaccess 来做到这一点?

php - MySQL 排名基于分数和播放时间

php - 需要在 Ubuntu 上使用 PHP 查找网络接口(interface)的 IP 地址