php - 使用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,但这对我来说似乎很奇怪。像我在这里一样单独命名查询是一种好习惯吗?
如果还有什么我应该添加的,请告诉我。
解决方案
我不会谈论标准,而是直接、简单地回答你的问题。
方法 - 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 评论值得注意
推荐阅读
- java - 事务性注释会降低 jpa 实现后的性能
- javascript - 如何使用 JSON.parse() 解析多个对象
- angular - Angler 5:将类添加到选中复选框的特定索引 LI
- react-native - 反应原生中的 BoxShadow
- node.js - 无法读取未定义的属性“标题”
- arrays - 我有一个图像列表,图像形状是 (50,50,3) 。如何转换为形状的 numpy.ndarray (19929,50,50,3)
- javascript - 第一个标志淡出,但第二个标志没有淡入......向下滚动。我错过了什么?
- gridview - 冻结网格视图标题 (odoo V12)
- java - 为什么 Wildfly 找不到 postgresql 驱动程序
- javascript - 如何自定义 json-server 错误处理