Php Codeigniter插入MySql表具有自动增量id的位置?
问题:当我添加id字段、主键、自动增量时,我的insert语句不再将记录插入表中 在添加id字段之前,我使用了一个带有唯一字符串的varchar字段作为主键。但是,现在我想添加一个直接的id-整数,主键,自动递增。 网络上似乎有很多关于这个的问题 相反,我发现所有问题都与Php Codeigniter插入MySql表具有自动增量id的位置?,php,mysql,sql,codeigniter-2,Php,Mysql,Sql,Codeigniter 2,问题:当我添加id字段、主键、自动增量时,我的insert语句不再将记录插入表中 在添加id字段之前,我使用了一个带有唯一字符串的varchar字段作为主键。但是,现在我想添加一个直接的id-整数,主键,自动递增。 网络上似乎有很多关于这个的问题 相反,我发现所有问题都与$this->db->insert_id()有关。但是$this->db->insert_id()更像是一个read,对我的insert语句的成功没有任何帮助 现在,我构造了一个数组调用$fielddata,并用表单中的数据填充
$this->db->insert_id()
有关。但是$this->db->insert_id()
更像是一个read,对我的insert语句的成功没有任何帮助
现在,我构造了一个数组调用$fielddata,并用表单中的数据填充每个数组元素,如下所示(高度简化):
我尝试过以下方法:
$fielddata['id'] = '';
…或
$fielddata['id'] = 0;
……但什么都不管用
更新:
我的问题是,我试图将一个数组元素设置为一个post元素,而实际上我并没有从表单传递该元素。由于某种原因,CodeIgniter没有抛出错误,所以我一直认为问题一定出在查询行上。事实并非如此。一旦我将表单字段添加到表单中,并将所有数组元素与所有表单元素进行匹配(当然不包括“提交”和其他非表字段的隐藏字段),插入操作就起作用了。能否显示表结构 测试表:
id(汽车公司10)
成员id(VARCHAR 10)
名称(VARCHAR 10)
电子邮件(VARCHAR 15)
创建表名“test”并测试它是否工作。能否显示表结构 测试表:
id(汽车公司10)
成员id(VARCHAR 10)
名称(VARCHAR 10)
电子邮件(VARCHAR 15)
创建表名“test”并测试它是否工作。如果它是自动递增的,则无需指定id。只要忽略该字段,让MySQL来处理它。如果它是自动递增的,则无需指定您的id。忽略该字段,让MySQL来处理它。您确定id现在是表的主键吗?你的桌子现在是什么样子?@xiankai,是的,id是我桌子的主键。和往常一样,我的问题是插入行之前的错误,与表/数据库无关。我本来打算删除这个问题,但我认为其他人会找到它并使用它来发现他们自己的编码错误,他们认为这是sql错误,但实际上是数据准备错误。您确定id现在是表的主键吗?你的桌子现在是什么样子?@xiankai,是的,id是我桌子的主键。和往常一样,我的问题是插入行之前的错误,与表/数据库无关。我本来打算删除这个问题,但我想其他人会找到它,并用它来发现他们自己的编码错误,他们认为这是sql错误,但实际上是数据准备错误。我的问题是,我试图将数组元素设置为post元素,而我实际上并没有从表单传递该元素。由于某种原因,CodeIgniter没有抛出错误,所以我一直认为问题一定出在查询行上。事实并非如此。一旦我将表单字段添加到表单中,并将所有数组元素与所有表单元素相匹配(当然不包括“Submit”和其他非表字段的隐藏字段),插入就起作用了。谢谢。我的问题是我试图将一个数组元素设置为一个post元素,而实际上我并没有从表单传递它。由于某种原因,CodeIgniter没有抛出错误,所以我一直认为问题一定出在查询行上。事实并非如此。一旦我将表单字段添加到表单中,并将所有数组元素与所有表单元素相匹配(当然不包括“Submit”和其他非表字段的隐藏字段),插入就起作用了。非常感谢。
$fielddata['id'] = 0;
$fielddata['member_id'] = 'abcdefghi12345';
$fielddata['name'] = 'John Smith';
$fielddata['email'] = 'jsmith@gmail.com';
$this->db->insert('test', $fielddata);