PHP MYSQL检测是否添加了新行

时间:2013-08-13 02:45:06

标签: php mysql newrow

任何想法如何识别我的数据库中是否添加了新客户端。

我正在考虑通过date_added字段识别它。

id    client_name     date_added
---------------------------------
1     ABC             2013-01-02
2     XYZ             2013-01-03 
3     EFG             2013-01-02
4     HIJ             2013-01-05

您可以在2013-01-05上看到新客户添加了HIJ。

我看着这样的结果:

Client List
Total NO: 4
New Client
Total No: 1
Client Name: HIJ

4 个答案:

答案 0 :(得分:3)

向表中添加一个字段new,默认为1,在页面加载时使用该字段用于select并将其设置为0以表示它不再是新的。

答案 1 :(得分:1)

很难说,但根据您的评论 ...我的参考日期是1个月的间隔... 您可能正在寻找类似的东西

SELECT id, client_name, new_count, total_count
  FROM
(
  SELECT id, client_name
    FROM clients
   WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
) c CROSS JOIN
(
  SELECT 
  (
    SELECT COUNT(*) new_count
        FROM clients
         WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
  ) new_count,
  (
    SELECT COUNT(*) total_count
        FROM clients
  ) total_count
) t 

显然,您可以在此查询中轻松更改CURDATE()过去任何其他参考日期,并获得该日期的结果。

让我们假设您有以下样本数据

+------+-------------+------------+
| id   | client_name | date_added |
+------+-------------+------------+
|    1 | ABC         | 2013-05-13 |
|    2 | XYZ         | 2013-06-13 |
|    3 | EFG         | 2013-06-13 |
|    4 | HIJ         | 2013-08-11 |
+------+-------------+------------+

今天是2013-08-13,然后查询的输出将是

+------+-------------+-----------+-------------+
| id   | client_name | new_count | total_count |
+------+-------------+-----------+-------------+
|    4 | HIJ         |         1 |           4 |
+------+-------------+-----------+-------------+

答案 2 :(得分:0)

您可以在网页或PHP脚本中记住之前看到的最高ID值。或者之前看过的最高时间戳(比日期更好)。

我更喜欢ID和版本号用于与并发相关的东西(锁定,找到最新等) - 因为它们应该被定义为升序,不会遭受“相同的毫秒”冲突,并且效率更高。

我假设您要在表单中的隐藏字段中保存应用程序的“状态”(关于用户看到了什么),或者某些情况。然后,这将跟踪“上次看到”并允许您识别自上次网页浏览以来的“新添加”。

如果您希望识别来自其​​他页面或登录应用程序时新添加的内容,则需要将“状态”存储在数据库中。

答案 3 :(得分:0)

这取决于你认为新的东西。您必须定义您要将记录与参考日期进行比较的内容。定义后,您可以使用如下查询:

SELECT * FROM client WHERE date_added> ='$ date'

其中$ date是参考日期。