0

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

好的,所以基本上我有一个带有用户登录系统的站点,用户可以在其中赚取积分做各种事情,然后将它们交换为新功能,在这个例子中,我将调用函数“user_images”。

交易存储在“function_users”中,其中有..

ID
function_id
user_id
cost
date

我已经让系统达到用户可以访问商店页面,购买功能并扣除适当的积分或货币的程度,我的问题是有经验的编码人员,确定是否购买功能的最有效方法是什么由用户?

粗略的例子(是的,我知道这不是 msql 注入证明,它只是一个例子:

$logged = $_SESSION['user_id'];

$check = mysql_query("SELECT * FROM feature_users WHERE `user_id`='$logged' AND feature_id='1'");
$check = mysql_num_rows($check);

if ($check < 1) {
include/features/user_images.php
?>

我不是要求有人为我编写代码,我只是在询问用户是否购买了该功能以便显示它时最有效的沟通方式。提前致谢

4

1 回答 1

0

您的查询:

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;
于 2013-09-06T10:45:48.183 回答