Codeigniter将带有字符串的ID号插入数据库

时间:2014-12-12 08:52:32

标签: php database codeigniter insert

我是codeigniter的新手,并且在插入带有字符串的ID号时遇到问题。任何人都可以帮我如何将其保存到数据库中吗?

实施例。 PM0001

每次我将它保存到数据库中只有数字" 1"出现在我的列ID中,但是当我从数据库中检索它时,它会显示ID号" PM0001"进入html表。

我的控制器:

public function enroll(){
    $data['title'] = "enroll";

    $this->load->model('addschool_model');
    $data['school'] = $this->addschool_model->getAll();
    $this->load->view('admin/view_enroll', $data);

    $this->form_validation->set_rules('fname', 'First name', 'required');
    $this->form_validation->set_rules('lname', 'Last name', 'required');
    $this->form_validation->set_rules('contact', 'Contact', 'required');
    $this->form_validation->set_rules('address', 'Address', 'required');

    if($this->form_validation->run()==FALSE) {
        $this->load->view('admin/view_enroll');

    } else {
        $this->load->model('stud_model');

        $udata['school'] = $this->input->post('school');
        $udata['pword'] = $this->input->post('password');
        $udata['fname'] = $this->input->post('fname');
        $udata['lname'] = $this->input->post('lname');
        $udata['contact'] = $this->input->post('contact');
        $udata['address'] = $this->input->post('address');

        $res = $this->stud_model->insert_user_to_db($udata);

        if ($res){
            redirect('admin/enroll');

        }

    }

}

我的模特:

public function insert_user_to_db($udata) {
    return $this->db->insert('students', $udata);

}

我的观点:

<tr class="data" >
    <td><?php echo "PM00".$u_key->ID; ?></td>
    <td><?php echo $u_key->PWORD; ?></td>
    <td><?php echo $u_key->SCHOOL; ?></td>
    <td><?php echo $u_key->FNAME; ?></td>
    <td><?php echo $u_key->LNAME; ?></td>
    <td><?php echo $u_key->CONTACT; ?></td>
    <td><?php echo $u_key->ADDRESS; ?></td>
    <td width="40" align="left"><a id="action" href="#" onClick="show_confirm('edit',<?php echo $u_key->ID; ?>)"><span class="glyphicon glyphicon-edit" aria-hidden="true"></a></td>
    <td width="40" align="left"><a id="action" href="#" onClick="show_confirm('delete',<?php echo $u_key->ID; ?>)"><span class="glyphicon glyphicon-remove" aria-hidden="true"></a></td>
</tr>

我认为我的观点还可以,因为该表显示了我想要显示的内容。 我只希望ID在我的数据库中显示与我视图中的表格相同。

我的数据库中的ID:ID = 1 我的表格视图中的ID:ID = PM001

我真的很感谢你的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

尽管这是一个非常糟糕的问题,因为为了理解这一点,你需要了解基本原理。

您可能已将您的ID设置为自动递增,这意味着每次插入新记录时它都会增加1。要跟进,请参阅this

这意味着您在数据库(表)中存储整数(whole numbers),因此字符串PM不会存在。您通过联系字符串来解决问题;您的代码<td><?php echo "PM00".$u_key->ID; ?></td>中的示例。

您的解决方案根本不好,因为当您在表中有10条记录时会发生什么?好吧,而不是显示PM010它将是PM0010我打赌你不想要那个。

要修复前导零问题,请在您的案例中使用函数str_pad();

<td><?php echo "PM".str_pad($u_key->ID, '3', '0', STR_PAD_LEFT);?></td>
  

为确保您理解,您不会在表格中看到PM001和PM002等!相反,你会看到简单的整数1,2,3 ...