我要在网站上创建用户数据库。我正在使用MySQL。
当用户在网站上进行注册过程时,需要添加用户的表格进行以下过程:
当新用户被添加到表“users”时,在该表中有一个名为“group”的列。因此要求此字段或列生成自动增量编号,但具有重复每个值四(4)次的属性。并且还要求仅为16384个用户限制注册过程。
e.g:
id | name | group
1 | mark | 1
2 | john | 1
3 | sammy | 1
4 | lucy | 1
5 | richard | 2
6 | michel | 2
7 | jennifer | 2
8 | mary | 2
9 | liz | 3
10 | mike | 3
11 | laura | 3
12 | astrid | 3
我正在搜索和阅读这么多,但这个问题看起来很独特,我不得不接受我对这些主题的理解不多,而我现在才刚刚学习MySQL和数据库。
我在 w3school.com 中找到了一些东西,这是我修改过的代码:
在HTML上创建表单:
<html>
<body>
<form action="insert.php" method="post">
name: <input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
和PHP“insert.php”:
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$name = mysqli_real_escape_string($con, $_POST['name']);
$group= (WHAT CAN I PUT HERE TO MAKE THE AUTO INCREMENT BUT REPEATING THE SAME
NUMBER FOUR TIMES?)
$sql="INSERT INTO Persons (Name, Group)
VALUES ('$name', '$group')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
我在这里可以做些什么来限制只注册16384个用户?
答案 0 :(得分:0)
目前还不清楚您是想要update
还是select
。这是select
版本:
select t.id, t.name,
(case when (@rn := @rn+1) is NULL then NULL
else floor((@rn - 1)/4)
end) as grp
from (select t.*,
from table t cross join
(select @rn := 0) var
order by id
limit 16384
) t;
如果您可以依赖id
列顺序而没有间隙,那么您可以改用它。
如果您需要update
,可以使用update
/ join
来合并这些结果。