问题:当我添加 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
就可以了。
答案 0 :(得分:2)
如果自动递增,则无需指定您的ID。只需忽略该字段,让MySQL处理它。
答案 1 :(得分:1)
你能展示你的桌子结构吗?
测试表:
id(AUTO INC 10)
member_id(VARCHAR 10)
名称(VARCHAR 10)
电子邮件(VARCHAR 15)
$fielddata['member_id'] = 'abcdefghi12345';
$fielddata['name'] = 'John Smith';
$fielddata['email'] = 'jsmith@gmail.com';
$this->db->insert('test', $fielddata);
创建表名'test'并测试它是否正常工作..