0

问题:当我添加一个id字段、主键、auto_increment 时,我的 insert 语句不再将记录插入到我的表中。

在添加id字段之前,我使用具有唯一字符串的 varchar 字段作为主键。但是,现在我想添加一个直接的 id - integer、primary_key、auto_increment。好像网上应该有很多关于这个的问题。

相反,我发现所有问题都与$this->db->insert_id(). 但$this->db->insert_id()更像是读取,并且没有使我的插入语句成功。

现在,我构造了一个名为 $fielddata 的数组,并使用表单中的数据填充每个数组元素,如下所示(高度简化):

$fielddata['member_id'] = 'abcdefghi12345';
$fielddata['name'] = 'John Smith';
$fielddata['email'] = 'jsmith@gmail.com';

$this->db->insert('members', $fielddata);

我试过这样的事情:

$fielddata['id'] = '';

...或者,

$fielddata['id'] = 0;

...但没有任何效果。

更新: 我的问题是我试图将一个数组元素设置为一个我实际上并没有从表单传递的 post 元素。出于某种原因,CodeIgniter 没有抛出错误,所以我一直认为问题一定出在查询行。不是。一旦我将表单字段添加到我的表单中,并将所有数组元素与所有表单元素匹配(当然省略了“提交”和其他不是表字段的隐藏字段),就可以insert工作了。

4

2 回答 2

2

如果它是自动递增的,则无需指定您的 id。只需忽略该字段并让 MySQL 处理它。

于 2013-10-06T03:20:36.230 回答
1

你能展示你的表格结构吗?

测试表:
id (AUTO INC 10)
member_id (VARCHAR 10)
name (VARCHAR 10)
email (VARCHAR 15)

$fielddata['member_id'] = 'abcdefghi12345';
$fielddata['name'] = 'John Smith';
$fielddata['email'] = 'jsmith@gmail.com';

$this->db->insert('test', $fielddata);

创建表名'test'并测试这是否有效..

于 2013-10-06T03:05:30.573 回答