2017-11-09 9 views
-1

コード:このコードで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_idを有するテーブル名のバグを持っています。今、私は値を持たないテーブル行にbug_id = 1を挿入し、その後に2を挿入して3を挿入すると、テーブルにデータを挿入したいと思います。しかし、今はsubmitボタンをクリックするとbug_id = 1と2が挿入されますが、3をクリックすると再びbug_id 2が挿入されます。だから、どうすればこの問題を解決できますか?どうか私を助けてください。

ありがとう

答えて

0

MySQLにはAUTO_INCREMENTが組み込まれています。いずれかのphpMyAdminにログインし、あなたのbug_idフィールドのプロパティを変更するには、編集をクリックし、 "A_I"フィールドを選択します。

それとも、SQLクエリでそれを行うことができます。@Twinfriendsの答えはあなたのニーズに適合しない(それはそれを行うための正しい方法でなければなりません

ALTER TABLE YOUR_TABLE MODIFY bug_id INTEGER NOT NULL AUTO_INCREMENT; 
0

場合、あなたは車輪の再発明べきではありません)多分問題はあなたにある:

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

あなたが実際にあなたが何か他のものを使用したいかもしれない、あなたの新しいIDとして$this->input->post('bug_id')を使用しているので?

$ bug varはどこから来たのですか?重複したIDや間違ったものを取得しないようにするには、「ORDER BY bug_id DESC LIMIT 1」のようなMySqlクエリに追加することができます(その結果、最高のbug_idを持つ結果として1行を取得します)。新しいIDとして

関連する問題