php - 向 Android 用户显示来自 MySQL 的信息 EXACLY ONCE

标签 php android mysql

假设我有这个 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/

相关文章:

php - laravel中的递归外键

php - 删除服务器上的文件后清除浏览器缓存

java - Android: api 16 将矩形的轮廓绘制为填充的矩形

android - 从设备中提取付费应用程序的 apk

Android:以编程方式在 EditText 中居中文本

php - Apache 意外关闭

php - 在 Laravel 中使用 React Native

mysql - Sails js 从数据库中获取数据而模型中没有模式定义

mysql - SQL 外键错误 1215

mysql - 重新启动 mysql 时刷新 mysql-relay-bin 日志文件