如何从数据库中获取自动递增的id值

时间:2016-11-29 06:40:37

标签: php mysql codeigniter

我正在尝试在codeigniter框架中的数据库中插入值,但是收到此错误。

A Database Error Occurred

Error Number: 1054

Unknown column '0' in 'field list'

INSERT INTO `admin_table` (`0`) VALUES ('')

Filename: C:\xampp\htdocs\CI\system\database\DB_driver.php

Line Number: 331

Admin_table

* ID int(10)自动增量主键

*名称:VARCHAR(255)

*电子邮件:VARCHAR(255)

*指定:VARCHAR(255)

*联系人:INT(10)

查看:

<form>
<input type="hidden" name="ID">
<legend>Add Data</legend>
    <label>Name</label>
      <?php echo form_input(['name'=> 'Name','placeholder'=>'Name',]);?>
    <label>Email</label>
      <?php echo form_input(['name'=> 'Email','placeholder'=>'Email']);?>
    <label>Designation</label>
      <?php echo form_input(['name'=> 'Designation','placeholder'=>'Designation']);?>
    <label>Contact</label>
      <?php echo form_input(['name'=> 'Contact','placeholder'=>'Contact']);?>
    <?php echo form_reset(['name'=>'Reset','value'=>'Reset']); ?>
    <?php echo form_submit(['name'=>'submit','value'=>'Add']) ?>
</form>

控制器:

      $this->load->library('form_validation');
      $post= $this->input->post();
      $this->load->model('model');
      if( $this->model->add_data($post)){
          //insert succesfully
      }
      else{
         //insert failed
      }

型号:

    $this->db->insert('admin_table',$array);
    $last_id=$this->db->insert_id();
    return $last_id;

当我在控制器中使用print_r($ post)时,它不会打印字段的值,而是在url中显示值。如果我错了,请告诉我。

提前致谢。

3 个答案:

答案 0 :(得分:1)

不要在模型中传递所有post请求,使插入数据数组。

按打印上次查询检查查询。

$this->db->last_query();

答案 1 :(得分:1)

问题来自以下几行:

$this->db->insert('admin_table',$array);

我认为$数组没有所需格式的值,或者它是空的。因此,使用以下方法打印最后一个插入查询:

$this->db->last_query();

并解决问题。

答案 2 :(得分:0)

在看到您的管理员表格描述后,我发现没有名为“0”的列。问题在询问中。我建议使用此:

    <table class = "table">
    <thead>
        <tr>
            <td><center><strong>Item Id</strong></center> </td>
            <td><center><strong>Item Description</strong></center> </td>
            <td><center><strong>Item Type</strong> </center></td>
            <td><center><strong>Availability</strong></center></td>
            <td><center><strong>Name</strong></center></td>
            <td><center><strong>Check in/out button</strong></center></td>
        </tr>
    </thead>
    <tbody>
    <?php
        mysql_select_db('inventory management system');
        $query="SELECT * FROM inventory";
        $results = mysql_query($query);
        $a = 0;

        while($row = mysql_fetch_array($results)) {
          $a++;
          echo '<script type = "text/javascript">c++;</script>'
        ?>
            <tr>
                <td><center><?php echo $row['item_id']?></center></td>
                <td><center><?php echo $row['item_desc']?></center></td>
                <td><center><?php echo $row['item_type']?></center></td>
                <td><center><?php echo $row['availability_status']?></center></td>
                <td><center><?php echo $row['name']?></center></td>
                <td><center><?php
                if(is_null($row['name'])){
//this is what is generating each button with a unique id                  echo '<input class="btn btn-default" type="submit" value="Check Out"  id = "<?php echo $a; ?>" onclick="<?php  ?>">';
                }else if(!is_null($row['name'])){
                  echo '<input class="btn btn-default" type="submit" value="Check In"  id = "<?php echo $a; ?>" onclick="updateinventory()">';

                }


                 ?></center></td>
            </tr>

        <?php
        }
        ?>
        </tbody>
        </table>

此外,如果列标记为自动增量,则无需提供显式值。数据库将获取先前的值并自行递增。