Php MySQL插入多行

Php MySQL插入多行,php,mysql,sql,Php,Mysql,Sql,我有一个设置表,正在尝试为用户插入数据设置 表: id (userid)|keyword|data|flags (setting id) 33 |name |John|22 33 |sex |male|21 33 |userid |33 |1 但我得到了一个MySQL错误: #1062-密钥“PRIMARY”的重复条目“33 name” id不是自动插入的(因为它用于保存用户id) 我的表架构: CREATE TABLE IF NOT

我有一个设置表,正在尝试为用户插入数据设置

表:

id (userid)|keyword|data|flags (setting id) 33 |name |John|22 33 |sex |male|21 33 |userid |33 |1 但我得到了一个MySQL错误:

#1062-密钥“PRIMARY”的重复条目“33 name”

id不是自动插入的(因为它用于保存用户id)

我的表架构:

CREATE TABLE IF NOT EXISTS `user_settings` (
  `id` varchar(20) NOT NULL DEFAULT '-1',
  `keyword` varchar(30) NOT NULL DEFAULT '',
  `data` varchar(255) NOT NULL,
  `flags` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`,`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

因为列标志是int

INSERT INTO users_settings
  (id,keyword, data, flags)
VALUES
 ( '31','name', 'John', 22),
 ( '32','sex', 'male', 21),
 ( '33','userid', '33', 1)

好的,我认为这里有两个问题

1) 您的ID(已用ID)字段可能是主键

2) 您正试图在标志的INT字段中插入字符

所以请尝试

INSERT INTO user_settings
  (id,keyword, data, flags)
VALUES
  ( '31','name', 'John', 22),
  ( '32','sex', 'male', 21),
  ( '33','userid', '33', 1);
编辑:

检查这个,它工作正常


只有一件事,create table has nameuser\u settings和insert has table nameusers\u settings。否则它工作得很好

对我有效的是这种格式,出于某种原因,我不得不按标志(1-22)排序


我认为插入您的数据没有问题

通过将两个字段的组合作为主键,您已经生成了候选键

当我们定义多个键时,主键的组合总是被称为候选键,在这种情况下,您不能插入两个值都与之前插入的值相同的记录

在分析了你的答案后,我可以说你以前一定插入过相同的记录

这个->id=33 ->关键字=名称


因此,请尝试另一种不同的值组合,我非常确定插入时不会出现任何错误。

您的表模式是什么?Id是自动递增的?除非
Id
是字符(
CHAR
VARCHAR
)列,否则不要引用这些值。我认为是Primary,因为错误与Primary有关。你能给出你的表模式吗?
Id VARCHAR(20)latin1\u swedish\u ci
关键字VARCHAR(30)latin1\u swedish\u ci
数据VARCHAR(255)latin1_swedish_ci flags int(1)
我仍然得到
#1062-键'PRIMARY'的重复条目'33 name'
使用不同的主键,那么在flag的int字段中插入
插入字符没有任何问题。
它可以工作。我从insert中删除了id列(仅用于测试),也按照您的建议从flags中删除了',我现在得到了不同的错误
#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“关键字”、“数据”、“标志”)值(“名称”、“John”22)附近使用的正确语法,(‘sex’、‘s’在第2行
好的,你能给你看一下表模式吗?@Sadikhasan,如果你已经检查过,可能是这样,我从来没有试过……。@user2767299我已经发布了我的表模式,id和关键字是主要的,这到底意味着什么?为什么你需要订购标志?没有任何意义。
INSERT INTO users_settings
  (id,keyword, data, flags)
VALUES
 ( '33','userid', '33', '1'),
 ( '32','sex', 'male', '21'),
 ( '31','name', 'John', '22')