php - 如何将用户购买的商品保存在数据库中并防止他再次购买
问题描述
我需要一些帮助来存储用户购买和下载的文件。我有一个包含文件及其 ID 的表格。当用户购买和归档时,它只是将他重定向到下载链接。但我想让 PHP 脚本将用户购买的文件的 ID 插入数据库。但是如何处理多个文件并将其 ID 存储在每个用户的 1 个字段中。例如,我有 10 个文件,用户购买了 1、2、3、8、9 文件。我想将这些数字存储在数据库中,并花一些时间来显示与这些 ID 对应的链接。
解决方案
您需要创建一个user_files
包含两列的表,user_id
并file_id
形成一个复合主键:
CREATE TABLE user_files (
user_id INT NOT NULL,
file_id INT NOT NULL,
PRIMARY KEY (user_id, file_id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (file_id) REFERENCES files(id),
);
如果用户1
购买文件1,2,3,8,9
,你会这样做
INSERT INTO user_files (user_id, file_id) VALUES (1,1), (1,2), (1,3), (1,8), (1,9)
然后,当您需要检查用户是否购买时,只需检查表中是否存在该 user_id / file_id 组合。
推荐阅读
- ssl - 在 Tomcat 上安装 SSL,其中 IIS 已在同一服务器上运行并配置了 SSL
- reactjs - 使用 react 和 redux 通过我的数据库获取值时出现错误
- project-reactor - project-reactor 中的 RxJava PublishSubject 等价于什么?
- c# - C# 软数字与输入的差异
- java - 检测矩阵中的相邻元素(SameGame)
- tensorflow - 在 Tensorflow 2.0 上使用给定模型获取梯度时遇到问题
- powershell - powershell 检查布尔环境变量
- javascript - dayjs 在日和小时中的两个日期之间的差异
- java - 如何从 onBindViewHolder 中获取 spinner 的值
- java - 应用程序的 onPause、onBackPressed 和 onResume 上的 MediaPlayer 行为