Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户功能商店系统_Php_Sql - Fatal编程技术网

Php 用户功能商店系统

Php 用户功能商店系统,php,sql,Php,Sql,在开始之前,我必须声明我对php/sql都很陌生,所以如果我的理解有点有限,我深表歉意 好的,基本上我有一个网站,有一个用户登录系统,用户可以通过做各种事情来获得积分,然后用它们交换新的功能,例如,我将调用函数user\u images 事务存储在函数_users中,该函数具有 ID function_id user_id cost date 我已经让系统达到用户可以访问商店页面、购买功能并扣除相应点数或货币的程度,我的问题是,对于有经验的编码人员,确定用户是否购买功能的最有效方法是什么 粗略

在开始之前,我必须声明我对php/sql都很陌生,所以如果我的理解有点有限,我深表歉意

好的,基本上我有一个网站,有一个用户登录系统,用户可以通过做各种事情来获得积分,然后用它们交换新的功能,例如,我将调用函数user\u images

事务存储在函数_users中,该函数具有

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;