我已经创建了一个数据库,所以人们可以参加比赛(这是一个学校项目),我添加了一些东西,所以你不能有两倍相同的电子邮件地址,但是当有重复的输入时,ID将会还算数。因此,例如有人想要加入电子邮件“helloworld@gmail.com”并且他获得ID 2然后他再次尝试,他将得到一个错误,该电子邮件已经被采取,但下一个想要登录的人,将获得ID 4而不是3.如果你能够这样做,那么数据库从签名的人那里保存了一个IP,我对它也很好,导致那就是我实际想做的。但只要你解决问题,我很高兴。谢谢! (我不知道为什么,但代码总是混乱......
<?php
// Only process the form if $_POST isn't empty
if ( ! empty( $_POST ) ) {
// Connect to MySQL
$mysqli = new mysqli( '***', '***', '***', '***' );
// Check our connection
if ( $mysqli->connect_error ) {
die( 'Kan niet verbinden met database. Probeer het later opnieuw. ' .
$mysqli->connect_errno . ': ' . $mysqli->connect_error );
}
// Insert our data
$sql = "INSERT INTO inschrijven ( naam, email, aantal ) VALUES ( '{$mysqli->real_escape_string($_POST['naam'])}', '{$mysqli->real_escape_string($_POST['email'])}', '{$mysqli->real_escape_string($_POST['aantal'])}' )";
// validate agree unless you want to add 'checked' to one of the values
$insert = $mysqli->query($sql);
// Print response from MySQL
if ( $insert ) {
echo "U bent succesvol ingeschreven! U heeft bootnummer: {$mysqli->insert_id}. Op de naam: . U krijgt hiervan nog een bevesteging op uw mail, uw bootnummer kan nog veranderen. Hopelijk zien we u op de BotenBouwDag 2016!";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
$mysqli->close();
}
?>
<HTML>
<head>
<title>
Welkom op de officiëlea site van de BotenBouwDag 2016
</title>
</head>
<body>
<form method="post" action="">
<input name="naam" id="naam" type="text">
<input name="email" id="email" type="email">
<input name="aantal" id="aantal" type="number">
<input type="radio" name="eten"> Ja
<input type="radio" name="eten"> Nee
<input type="submit" id="submit" value="Verstuur Informatie">
</form>
答案 0 :(得分:-1)
从this Q&A开始,InnoDB
由于rollback
策略而增加。所以他们允许Id之间的差距。我现在看到两个选择:
SELECT COUNT(*) FROM table_name;
编辑:
Take a look at this了解获取IP adress
的方式。由于大多数人都会在学校注册,你可能会发现你的学校ip多次出现;)
希望它有所帮助!
答案 1 :(得分:-1)
将内部自动生成的号码传递给用户并不是一种好习惯。
&#34;自动增量代理键对内部应用程序使用很有用。永远不要将这些传递给用户。&#34;见这里: - ID Best Practices for Databases
如果您真的想完全控制用户号码,可以选择几种方式。
向表中添加新字段。在每次插入新用户之前,查询数据库,排序,降序以查找当前最高编号。插入具有该数字的新用户+1。
或者您可以使用单独的表来维护&#34;下一个id来分配&#34;并将其保存在你的&#34; inschrijven&#34;表。你甚至可以用10,000开始,所以所有用户都得到一个数字相同的数字。 所有在同一个事务中,读取新表,增加数字和UPDATE并将该数字用于新订户。那就是你给他们的数字。 ISN(内部序列号)仍然是关键。
在这两种情况下,如果删除用户,都会有间隙。