假设我有这个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,另一个用于批准收到信息。但是这样,用户可以通过不发送收到的消息多次接收信息。
感谢您的帮助:))
答案 0 :(得分:0)
你可以在update
语句中分配变量:
UPDATE table
SET seen = if(@info := info, 1, 1)
WHERE id = $id;