将MySQL EXACTLY ONCE中的信息显示给Android用户

时间:2015-02-18 03:45:35

标签: php android mysql

假设我有这个MySQL表:

+-----+-------------+------+
| id  | info        | seen |
+-----+-------------+------+
| 1   | bla bla     | 0    |
+-----+-------------+------+

我想构建一个RESTful API,其中android客户端提供rowID并获取查看信息。在我回显信息后,我设置了= 1,这样用户就无法再次访问该信息。

假设我在一个请求中执行所有这些操作,例如:

- $id = $_GET['id']
- SELECT * FROM table WHERE seen=0 and id=$id
- echo $info
- UPDATE table SET seen=1 WHERE id=$id

如果用户失去连接并且“看到”更新1,即使用户从未收到过$ info,会发生什么?我怎样才能确保这种情况永远不会发生?我怎样才能发现这个?

我还想过发送两个请求,一个用于获取$ info,另一个用于批准收到信息。但是这样,用户可以通过不发送收到的消息多次接收信息。

感谢您的帮助:))

1 个答案:

答案 0 :(得分:0)

可以update语句中分配变量:

UPDATE table
   SET seen = if(@info := info, 1, 1)
   WHERE id = $id;