如何使用mysql查询创建自动增量序列号?

时间:2017-11-09 08:23:56

标签: php mysql

代码:

<?php
    $this->db->select('*');
    $this->db->from('bugs');
    $where = "project_name = '".$project."'";
    $this->db->where($where);
    $sql = $this->db->get();
    $res = $sql->num_rows();
    if($res === 0)
    {
        $i = 1;
        foreach ($bug as $row) 
        {
            echo $i;
        }
    }
    else
    {
        $i = 1;
        foreach ($bug as $row) 
        {
            echo ++$i;
        }
    }
?>

$data = array(
        'project_name'=>$this->input->post('project'),
        'bug_id'=>$this->input->post('bug_id'),
        );
$query = $this->db->insert('bugs',$data);

在这段代码中我有一个表名bug,我有一个列,即bug_id。现在,我想将数据插入到我的表中,如果表行没有值,则插入bug_id = 1,然后插入2然后3等等。但是现在当我点击提交按钮时,它会插入bug_id = 1然后输入2但是当我点击第三个时它会再次插入bug_id 2。那么,我该如何解决这个问题呢?请帮帮我。

谢谢

2 个答案:

答案 0 :(得分:0)

MySQL集成了AUTO_INCREMENT。您可以登录phpMyAdmin并通过单击编辑更改bug_id字段的属性,然后选择&#34; A_I&#34;字段。

或者您可以使用SQL查询执行此操作:

ALTER TABLE YOUR_TABLE MODIFY bug_id INTEGER NOT NULL AUTO_INCREMENT;

答案 1 :(得分:0)

如果@Twinfriends回答并不符合您的需求(但这应该是正确的方法,您不应该重新发明轮子)那么问题可能就在于:

   $data = array(
   'project_name'=>$this->input->post('project'),
   'bug_id'=>$this->input->post('bug_id'),
   );
   $query = $this->db->insert('bugs',$data);

由于您实际上使用$this->input->post('bug_id')作为新ID,或许您想使用其他内容?

你的$ bug var来自哪里?为了确保不会出现重复的ID或错误的ID,您可以在MySql查询中添加类似&#34; ORDER BY bug_id DESC LIMIT 1&#34; (这样你获得最高bug_id的结果就是1行)然后只使用那个结果+ 1作为新的id