假设我们有一个名为postsand的数据表users。显然,users包含赌徒的数据(带有一个方便的id字段和points他们拥有的点数),并posts包含post_id行的 ID 字段,user_id即用户的 ID,value以及发布的数字本身。
现在您只需在脚本中实现以下 SQL 查询:
UPDATE users INNER JOIN posts ON users.id = posts.user_id SET users.points = (users.points + 1)
WHERE posts.value = 0;
末尾0的位置将替换为随机抽取的数字。
这个查询会做什么?使用该INNER JOIN构造,它将在两个表之间创建一个链接。自动,如果posts.value匹配我们的号码,它将链接 posts.user_id到users.id,知道哪个用户必须points修改他/她。如果有人赌博0,并且他的 ID( posts.user_id) 是8170,则该points字段将为拥有的用户更新user.id = 8170。
如果您更改查询以使其成为(users.points - 1)和WHERE posts.value != 0,您将让非获胜者扣除一分。它可以根据需要进行调整。
小心点!每次每日抽奖后,帖子表都需要截断或存档。
另一种选择是存储time()用户投注数字的时间戳(在 PHP 中),并在执行时检查存储的时间戳......是否在当天的开始和结束之间。
提示:您可以使用图形数据库软件(如 Microsoft Access 或 LibreOffice Base)JOIN在图形显示器上模拟您的 s 等。它使初学者更容易建模此类问题。如果您不想要桌面安装的软件,尝试安装phpMyAdmin也是另一种解决方案。
编辑:
非关系数据库
如果您要使用非关系型数据库,您首先需要获取所有获胜者ID:
SELECT user_id FROM posts WHERE value=0;
这将为您提供多行的结果。现在,您将需要逐一检查此结果,并执行以下查询:
UPDATE users SET points=(users.points + 1) WHERE id=1;
(0是中奖号码,是用户更新1的并发数。)id
不使用 MySQL 的关系功能,但使用 MySQL 数据库,脚本将如下所示:
<?php
$number = 0; // This is the winning number we have drawn
$result = mysql_query("SELECT user_id FROM posts WHERE number=" .$number);
while ( $row = mysql_fetch_assoc($result) )
{
$curpoints_result = mysql_query("SELECT points FROM users WHERE user_id=" .$row['user_id']);
$current_points = mysql_fetch_assoc($curpoints_results);
mysql_query("UPDATE users SET points=" .($current_points['points'] + 1). " WHERE user_id=" .$row['user_id']);
}
?>
该while构造使此循环一直运行,直到结果(获胜者列表)的每一行都被更新。
哦,我知道MySQL 是一个关系数据库,但它就是它的本质:一个示例。