首页 > 解决方案 > 使用PHP while循环将数据插入Mysql

问题描述

我正在尝试根据我的数据库检查电子邮件,如果它尚不存在,请将其添加到数据库中。

$query = "SELECT * FROM users";

$inputQuery = "INSERT INTO users (`email`, 
`password`) VALUES ('$emailInput', 
'$passInput')";

$emailInput = ($_POST['email']);

$passInput = ($_POST['password']);


if ($result = mysqli_query($link, $query)) { 

    while ($row = mysqli_fetch_array($result)) { 
        if ($row['email'] == $emailInput) { 
            echo "We already have that email!";
        } else {
            mysqli_query($link, $inputQuery);
            echo "Hopefully that's been added to the database!";
        }
    }
};

它可以检测到现有的电子邮件,这只是添加位...

目前,这似乎为每个现有行添加了一个新的空行(大小加倍)。我试图理解为什么它不添加信息,以及如何以某种方式逃避循环。

同样,每个人似乎都在重用 $query,但这对我来说似乎很奇怪。像我在这里一样单独命名查询是一种好习惯吗?

如果还有什么我应该添加的,请告诉我。

标签: phpmysqlwhile-loopinsertnaming-conventions

解决方案


我不会谈论标准,而是直接、简单地回答你的问题。

方法 - 1:

INSERT INTO users (`email`,`password`) SELECT '$emailInput', '$passInput' from DUAL WHERE NOT EXISTS (select * from users where `email` = '$emailInput');

方法 - 2: - 在列上创建唯一键email- 使用 INSERT IGNORE 选项。

user3783243 评论值得注意


推荐阅读