Php 用户功能商店系统
在开始之前,我必须声明我对php/sql都很陌生,所以如果我的理解有点有限,我深表歉意 好的,基本上我有一个网站,有一个用户登录系统,用户可以通过做各种事情来获得积分,然后用它们交换新的功能,例如,我将调用函数user\u images 事务存储在函数_users中,该函数具有Php 用户功能商店系统,php,sql,Php,Sql,在开始之前,我必须声明我对php/sql都很陌生,所以如果我的理解有点有限,我深表歉意 好的,基本上我有一个网站,有一个用户登录系统,用户可以通过做各种事情来获得积分,然后用它们交换新的功能,例如,我将调用函数user\u images 事务存储在函数_users中,该函数具有 ID function_id user_id cost date 我已经让系统达到用户可以访问商店页面、购买功能并扣除相应点数或货币的程度,我的问题是,对于有经验的编码人员,确定用户是否购买功能的最有效方法是什么 粗略
ID
function_id
user_id
cost
date
我已经让系统达到用户可以访问商店页面、购买功能并扣除相应点数或货币的程度,我的问题是,对于有经验的编码人员,确定用户是否购买功能的最有效方法是什么
粗略示例是的,我知道这不是msql注入证明,只是一个示例:
我不是要求有人为我写代码,我只是问如果用户已经购买了该功能,那么它可以显示该功能,以最有效的方式进行沟通。提前感谢您的查询:
SELECT *
FROM feature_users
WHERE `user_id` = '$logged' AND feature_id = '1';
这很简单。为了尽可能提高效率,您需要在表上创建一个复合索引:
create index feature_users_user_feature on feature_users(user_id, feature_id);
另外三点意见。首先,不需要返回所有列。如果查询返回任何内容,则用户拥有该功能。其次,id列通常是整数,因此为了便于阅读,常量值不应该用单引号括起来。第三,如果有人输入一个用户,他们通常会输入一个名字。你的意思可能是:
SELECT 1
FROM feature_users fu
users u
on fu.user_id = u.user_id
WHERE `user_name` = '$logged' AND feature_id = 1;
这不仅仅是注入保存——你根本不应该使用mysql系列:正如我所说,这只是我关于如何编码的想法的一个粗略示例,但我想知道是否有更有效的方法来实现它。你所拥有的已经是最有效的方法了。。但是你用了错误的方法。
SELECT 1
FROM feature_users fu
users u
on fu.user_id = u.user_id
WHERE `user_name` = '$logged' AND feature_id = 1;