Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 插入忽略无效_Php_Mysql_Sql - Fatal编程技术网

Php 插入忽略无效

Php 插入忽略无效,php,mysql,sql,Php,Mysql,Sql,如果不存在,我会尝试执行插入操作 所以我搜索这个,我发现: 因此,我尝试使用忽略,这是我的表: CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(255), `mail` VARCHAR(255), PRIMARY KEY (`id`) ) CHARACTER SET utf8 COLLATE utf8_general_ci; 这是我的问题: INSERT IGNORE INTO `users` SE

如果不存在,我会尝试执行
插入操作

所以我搜索这个,我发现:

因此,我尝试使用
忽略
,这是我的表:

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255),
`mail` VARCHAR(255),
PRIMARY KEY (`id`)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
这是我的问题:

INSERT IGNORE INTO `users` SET `mail` = ?, `name` = ?
但它的插入即使存在 我搜索了一下,发现:

我在那里读到,只有主键的dosent才能插入重复项

正如您在我的表中看到的,我有主键
如果问题是我需要在我的查询中插入id字段,那么这就是问题所在,因为我在执行查询时不知道它是什么

那么,如何在不创建重复项的情况下将信息插入数据库?

只有当您尝试向主键(id)列插入值时,插入忽略才起作用,但您没有包含id。另一方面,您甚至不需要它。你做得很对。当您插入一个新用户时,它将获得我想要的下一个可用用户,因为它是自动递增的


也许你想把email字段设为uniq,这样两个用户就不能有相同的email。在这种情况下,如果您使用了表中已有的电子邮件,则insert ignore将忽略添加新行。

您必须首先使用您尝试插入的信息进行选择,如果结果包含一行或多行,则不插入

例如,从mail=?名称=?

然后检查返回的结果对象,并根据它插入或跳过。

insert仅在违反某些键时忽略跳过记录。在您的案例中创建唯一密钥:

CREATE UNIQUE INDEX uniq_users ON users (name, mail);

那么主键应该是你在发布iSeries时明确知道的东西,例如电子邮件。OP表示他知道这个问题并在寻找替代解决方案,而且他不知道
id
,因为它很可能是
自动递增
字段,并且大多数时候都是未知的。谢谢。我只是觉得有一个问题是可能的。