假设我有这个 MySQL 表:
+-----+-------------+------+
| id | info | seen |
+-----+-------------+------+
| 1 | bla bla | 0 |
+-----+-------------+------+
我想构建一个 RESTful API,其中 Android 客户端提供 rowID 并查看信息。在回显信息后,我设置了 saw=1,这样用户就无法再次访问该信息。
假设我在一个请求中完成所有这些操作,例如:
- $id = $_GET['id']
- SELECT * FROM table WHERE seen=0 and id=$id
- echo $info
- UPDATE table SET seen=1 WHERE id=$id
如果用户失去连接并且“seen”更新 1,即使用户从未收到过 $info,会发生什么?我怎样才能确保这种情况永远不会发生/我怎样才能检测到这种情况?
我还考虑过发送两个请求,一个用于获取 $info,另一个用于批准收到信息。但这样用户可以通过不发送收到的消息来多次接收该信息。
感谢您的帮助:)
最佳答案
您可以在update
语句中分配变量:
UPDATE table
SET seen = if(@info := info, 1, 1)
WHERE id = $id;
关于php - 向 Android 用户显示来自 MySQL 的信息 EXACLY ONCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575608/