与INSERT mysqli重复

时间:2013-12-02 14:13:03

标签: php forms mysqli

当我在我的数据库中插入用户名和电子邮件时,数据会重复。所以我为同一个用户有两个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;

    ?>

2 个答案:

答案 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')");