当我在我的数据库中插入用户名和电子邮件时,数据会重复。所以我为同一个用户有两个id。当我回显查询的受影响的行数时,结果是1.有人可以帮我这个吗?
<form name="field" method="post" action="test.php">
<label for="username">Username:</label><br>
<input name="username" id="username" type="text"/><br>
<label for="email">Email:</label><br>
<input name="email" id="email" type="text"/><br>
<input name="submit" type="submit" value="Register" id="submit" />
</form>
<?php
$mysqli = new mysqli('127.0.0.1', 'root', '', 'project');
$username = $_POST['username'];
$email = $_POST['email'];
$mysqli->query("INSERT INTO `project`.`registration` (`id`,`username`,`email`) VALUES ('id','$username','$email')");
$result = $mysqli->affected_rows;
echo $result;
?>
答案 0 :(得分:0)
您必须尽可能使用唯一的列。例如,如果用户名是唯一的,则必须在注册表中使其唯一。
例如:
CREATE TABLE Registration (
username varchar(50) NOT NULL UNIQUE,
email varchar(255) NOT NULL,
id INT NOT NULL );
通过将此约束添加到表中,您应该能够看到错误的来源。
答案 1 :(得分:0)
首先,出于安全原因,仅使用预准备语句和PDO包装器。现在到了问题。你的数据库方案是什么?你从哪里获得了id
变量?它是你使用它的方式的常量。请注意,如果您的方案说id int auto_increment主键。它会自行递增,因此您无需手动设置ID。
更改
$mysqli->query("INSERT INTO `project`.`registration` (`id`,`username`,`email`) VALUES ('id','$username','$email')");
到
$mysqli->query("INSERT INTO `project`.`registration` (`username`,`email`) VALUES ('$username','$email')");